【问题标题】:click event not trigerred in IE点击事件未在 IE 中触发
【发布时间】:2010-03-23 08:09:29
【问题描述】:

我正在尝试为来自 jquery 的按钮触发点击事件。它在 FF 中运行良好,但 IE(所有版本)似乎忽略了它。这是我迄今为止尝试过的..

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

然后尝试了这个..

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

只是为了清除..即使这个..

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

然后甚至尝试这个来检查它是否是 jquery 的问题..

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

似乎没有任何帮助 IE..

提前谢谢..

更新:这是代码.. 不,我没有相同 id 的元素..

<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>

我想我在这里已经很清楚了

【问题讨论】:

  • 似乎您有更多具有相同 ID 的元素 - 不是吗?
  • 你应该发布你正在尝试这个的整个代码块,以及你想要做什么(即,如果你试图触发之前附加的自定义事件,或者你期待一些浏览器行为,例如提交表单)。如果要提交表单,最好使用 $("#formID").submit()。如果您尝试触发附加事件,请确保您没有在附加该事件的同一函数中调用 .click(),IE 可能仅在当前函数返回后附加它。
  • @knittl:我已经尝试了该帖子中的所有答案..请仔细查看我的问题...
  • SaveChange() 是做什么的?你试过$("#uxSubmit").parents("form").submit() 吗?

标签: javascript jquery events


【解决方案1】:

在您发布的代码中Stage 未定义,IE 不会这样。 $('#uxSubmit').click(); 也应该是 $('#uxcSubmit').click();。我也不确定您何时调用 getFrameValue();,但它必须在 document.ready 或之后完成,否则元素将无法匹配选择器。

我也清理了其余部分以使用 jQuery 方法(保留内联进行演示,但我也会将其删除并将其更改为单击处​​理程序),这在 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() 更改为绑定的点击处理程序,请移除 onclick 并在准备就绪时执行此操作:

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

【讨论】:

  • 看来你已经把它给我了
【解决方案2】:
$("#uxcSubmit").closest("form").submit('SaveChange'); //let SaveChange() return true/false

...并删除内联的“onclick”属性

【讨论】:

    【解决方案3】:

    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 错误。顺便提一句。您在错误控制台中收到任何警告吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多