Программно инициирующие события в JavaScript для IE с помощью jQuery

Активируйте двухфакторную аутентификацию, а затем создайте для своей учетной записи Gmail пароли для конкретных приложений, которые ваше приложение может использовать для подключения к SMTP-серверу:

https://support.google.com/mail / answer / 185833? hl = ru

Когда вы подписываетесь на двухэтапное подтверждение, мы обычно высылаем вам коды подтверждения. Однако эти коды не работают с некоторыми приложениями и устройствами, такими как Outlook. Вместо этого вам нужно будет авторизовать приложение или устройство при первом его использовании для входа в свою учетную запись Google путем создания и ввода пароля приложения.

blockquote>

Затем пароль связывается с приложением, использующим его, поэтому его не следует отклонять.

9
задан Dan Herbert 3 October 2008 в 20:41
поделиться

5 ответов

У меня была та же проблема. Решенный при помощи этой функции:

jQuery.fn.extend({
    fire: function(evttype){ 
        el = this.get(0);
        if (document.createEvent) {
            var evt = document.createEvent('HTMLEvents'); 
            evt.initEvent(evttype, false, false); 
            el.dispatchEvent(evt); 
        } else if (document.createEventObject) { 
            el.fireEvent('on' + evttype); 
        }
        return this;
    }
});

Таким образом, мой "onSelect" обработчик событий к datepicker похож:

if ($.browser.msie) {
    datepickerOptions = $.extend(datepickerOptions, { 
        onSelect: function(){
            $(this).fire("change").blur();
        }
    });
}
7
ответ дан 4 December 2019 в 12:22
поделиться

Это - то, как я решил проблему simlar. Записал onSelect () обработчик для datepicker. текста ссылки В той функции, вызванной __ doPostBack ('textboxcontrolid'''). Это инициировало частичную обратную передачу для текстового поля к серверу, который названный блоками проверки допустимости в свою очередь.

0
ответ дан 4 December 2019 в 12:22
поделиться

Считайте установку скрытого поля _EVENTTARGET значением перед инициированием событие с JavaScript. Необходимо будет установить его на серверный идентификатор (подчеркивание замены с $ в клиентском идентификаторе), чтобы сервер понял это. Я делаю это на нажатиях кнопок, которые я моделирую так, чтобы сторона сервера могла определить, какой метод OnClick стрелять, когда результат становится отправленным назад - Ajax или нет, действительно не имеет значения.

2
ответ дан 4 December 2019 в 12:22
поделиться

Из того, что Вы описываете, эта проблема вероятна результат уникальной модели распространения событий, которую IE использует для JS.

Мой единственный реальный ответ должен угробить блоки проверки допустимости ASP.NET и использовать плагин проверки формы jQuery вместо этого. Затем Ваше текстовое поле может просто быть регулярным управлением Веб-формами ASP и когда изменение содержания и обратная передача происходят, все хорошо. Кроме того, Вы сохраняете больше клиентских проблем разделенным от серверного кода.

У меня никогда не было большой удачи при смешивании Клиентских средств управления Веб-формой (как средства управления Проверкой Формы) с внешними библиотеками JS как jQuery. Я нашел, что лучший маршрут должен только пойти с одним или другим, но не к смешиванию и подгонке.

Не ответ Вы, вероятно, ищете.

Если Вы хотите пойти с плагином проверки формы jQuery, рассматривают эту Проверку Формы jQuery

2
ответ дан 4 December 2019 в 12:22
поделиться

Это обычная проблема для jQuery datepickers и элементов управления проверкой ASP. Как вы говорите, неправильный элемент перекрестно запускает процедуру проверки javascript ASP NET, а затем код M $ выдает ошибку, потому что триггерный элемент в подпрограмме не определен.

Я решил эту проблему иначе, чем кто-либо другой, кого я видел - решив, что M $ следовало бы написать свой код более надежно, и, следовательно, повторно объявив часть кода валидатора M $, чтобы справиться с неопределенным элементом.Все остальное, что я видел, - это, по сути, обходной путь на стороне jQuery, который исключает возможную функциональность (например, использование события щелчка вместо изменения).

Бит, который терпит неудачу, - это

   for (i = 0; i < vals.length; i++) {
        ValidatorValidate(vals[i], null, event);
    }

, который выдает ошибку при попытке получить длину для неопределенных 'vals'.

Я только что добавил

if (vals) {
    for (i = 0; i < vals.length; i++) {
        ValidatorValidate(vals[i], null, event);
    }
}

, и она готова. Окончательный код, который повторно объявляет всю нарушающую функцию, приведен ниже. Я помещаю его как сценарий, включенный в нижнюю часть моей главной страницы или страницы.

Да, это нарушит совместимость снизу вверх, если M $ решат изменить свой код валидатора в будущем. Но можно надеяться, что они это исправят, и тогда мы сможем избавиться от этого патча вообще.

//  Fix issue with datepicker and ASPNET validators: redeclare MS validator code with fix
 function ValidatorOnChange(event) {
    if (!event) {
        event = window.event;
    }
    Page_InvalidControlToBeFocused = null;
    var targetedControl;
    if ((typeof (event.srcElement) != "undefined") && (event.srcElement != null)) {
        targetedControl = event.srcElement;
    }
    else {
        targetedControl = event.target;
    }
    var vals;
    if (typeof (targetedControl.Validators) != "undefined") {
        vals = targetedControl.Validators;
    }
    else {
        if (targetedControl.tagName.toLowerCase() == "label") {
            targetedControl = document.getElementById(targetedControl.htmlFor);
            vals = targetedControl.Validators;
        }
    }
    var i;
    if (vals) {
        for (i = 0; i < vals.length; i++) {
            ValidatorValidate(vals[i], null, event);
        }
    }
    ValidatorUpdateIsValid();
}
2
ответ дан 4 December 2019 в 12:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: