我正在尝试触发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>
我想我已经清楚了
答案 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错误。顺便说一句。你在错误控制台中收到任何警告吗?