在IE中未触发单击事件

时间:2010-03-23 08:09:29

标签: javascript jquery events

我正在尝试触发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>

我想我已经清楚了

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

$("#uxcSubmit").closest("form").submit('SaveChange'); //let SaveChange() return true/false

...并删除内联'onclick'属性

答案 2 :(得分:0)

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提到的bug有关(我现在无法检查dev.jquery.com是否已关闭)或者还有其他一些IE错误。顺便说一句。你在错误控制台中收到任何警告吗?