событие клика не срабатывает в IE - PullRequest
0 голосов
/ 23 марта 2010

Я пытаюсь вызвать событие нажатия для кнопки из jquery. это работает очень хорошо в FF, но IE (все версии), кажется, игнорирует это. это то, что я пробовал до сих пор ..

$('#uxcSubmit').trigger('click');

затем попробовал это ..

$('#uxcSubmit').click();

просто чтобы очистить .. даже это ..

jquery('#uxcSubmit').click();

затем даже попытался это проверить, если это проблема jquery ..

document.getElementById('uxcSubmit').click();

кажется, ничего не помогает IE ..

заранее спасибо ..

Обновление : это код .. и нет, у меня нет элементов с одинаковым идентификатором ..

<div id="uxcSavingDiv">Click sumbit to save changes...</div>
<input id="uxcSubmit" value="Submit" onclick="return SaveChange();"/>
<script type="text/javascript">
function getFrameValue() {
    if (Stage == 0) {
            $('#uxsHiddenField').attr("value", "saved");
            Stage = 1;
            $('#uxSubmit').click();
            return false;
    }
    else {
        $('#uxcSavingDiv').innerHTML = "Saving...";
        return true;
    }
}
</script>

Я думаю, что здесь все ясно

Ответы [ 3 ]

1 голос
/ 23 марта 2010

В опубликованном вами коде Stage не определено, IE не понравится. Также $('#uxSubmit').click(); должно быть $('#uxcSubmit').click();. Я также не был уверен, когда вы звоните getFrameValue();, но это должно быть сделано в или после document.ready, иначе не будет элементов, которые бы соответствовали селекторам.

Я очистил остальные, чтобы также использовать методы jQuery (оставив in-line для демонстрации, но я бы тоже удалил это и изменил на обработчик кликов), в IE8 это прекрасно работает:

<div id="uxcSavingDiv">Click sumbit to save changes...</div>
<input id="uxcSubmit" value="submit" onclick="return SaveChange();"/>
<script type="text/javascript">
var Stage = 0;
function getFrameValue() {
    if (Stage == 0) {
            $('#uxsHiddenField').val("saved");
            Stage = 1;
            $('#uxcSubmit').click();
            return false;
    }
    else {
        $('#uxcSavingDiv').html("Saving...");
        return true;
    }
}
function SaveChange() {
  alert("Value clicked");
}
$(function(){
  getFrameValue(); //Trigger it on document.ready
});
</script>

Чтобы изменить это SaveChange() на обработчик связанных кликов, удалите онклик и сделайте это наготове:

$('#uxcSubmit').click(SaveChange);
0 голосов
/ 23 марта 2010

Соответствующий фрагмент кода из jQuery должен быть следующим:

// Trigger an inline bound script
try {
    if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
        if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
            event.result = false;
        }
    }
    // prevent IE from throwing an error for some elements with some event types, see #3533
} catch (e) {}

Так что, я думаю, это связано с упомянутой ошибкой 3533 (которую я не могу проверить, так как dev.jquery.com сейчас не работает), или есть какая-то другая ошибка IE. Кстати. Вы получаете какие-либо предупреждения в консоли ошибок?

0 голосов
/ 23 марта 2010
$("#uxcSubmit").closest("form").submit('SaveChange'); //let SaveChange() return true/false

... и удалить встроенный атрибут onclick

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...