内联onclick正在覆盖JQuery click()
Inline onclick is overriding JQuery click()
这个问题的后续
编辑
JSFiddle代码
正如您所看到的,如果您运行代码,按钮文本不会更改,onclick将覆盖click函数。如果从函数中删除form id属性,从html标记中删除onclick属性,代码将按预期工作(在实际场景中,没有onclick函数意味着提交按钮而不是按钮)
结束编辑
我曾认为JQuery在指定内联事件时没有触发click()事件是打字错误造成的,但我又遇到了这个问题。这是我的代码和违规标签
<input id="submit1" type="button" onclick="this.disabled=true; doSubmit();" value="submit">
<script>myfunction('submit1', 'working', myformID)</script>
var myfunction = function(ID , text , formID) {
if(ID) {
var element = document.getElementById(ID);
if(formID) {
var form = document.getElementById(formID);
}
if (element) {
jQuery(element).click( function() {
if(jQuery(this).attr('disabled')) {
return false;
}
jQuery(this).attr('disabled' , 'disabled');
jQuery(this).attr('value' , processingText);
onclick = (jQuery(this).attr('onclick') || jQuery(this).attr('onClick'));
if(form && !onclick) {
jQuery(form).submit();
}
jQuery(this).click();
});
}
}
};
我正在使用javascript创建一个函数,该函数将禁用提交按钮,同时在doSubmit的情况下保持任何onclick属性正常工作,就像本例中一样。在其他设置了表单id但没有现有onclick的情况下,我会提交表单。因此,如果html标签有问题,我需要一种通用的方法来用JS修复它。
提前感谢
您的内联处理程序禁用按钮:this.disabled=true;
然后jQuery处理程序检查它是否被禁用,如果是则返回:
if(jQuery(this).attr('disabled')) {
return false;
}
不幸的是,无法预测同一元素上同一事件的事件处理程序执行顺序。
作为一个快速解决方案,我可以建议:
演示
jQuery(element).click( function() {
if(jQuery(this).attr('disabled-by-jquery')) {
return false;
}
jQuery(this).attr('disabled' , 'disabled');
jQuery(this).attr('disabled-by-jquery' , 'disabled');
jQuery(this).attr('value' , text);
onclick = (jQuery(this).attr('onclick') || jQuery(this).attr('onClick'));
if(form && !onclick) {
jQuery(form).submit();
}
jQuery(this).click();
});
相关文章:
- jQuery:.click(function(){(element),collapse('show',f
- 具有相同类的jquery-click元素
- angularjs-bindng-click从jquery动态加载DOM
- jquery on click事件来显示内容
- jQuery.on-click事件不会发生
- 追加Jquery后的Binding Click事件不起作用
- 使用Jquery.click显示/隐藏切换,适用于新用户,但不适用于种子
- iframe中的jquery-click元素
- 响应式表设计:使用JQuery使click()展开tr
- Jquery:输入类型=“”;按钮“;使用.click()函数在Internet Explorer和Safari中不起作
- 一旦用jquery更改了类,按钮就没有响应click
- jQuery-click函数不适用于使用innerHTML动态生成的按钮
- .click() 使用 document.getElementById,但不使用 jquery selector
- addEventListener 在 Javascript 中不起作用,但 jQuery Click 正在工作
- jQuery if url hash, click event/activate javascript
- Using $(this).find with .click() jQuery
- double action in one click jquery
- 如何将click jquery函数与此代码一起使用
- localstorage on button click [Jquery]
- Collapse slideToggle on Click jQuery