gpt4 book ai didi

javascript - 内联 onclick 覆盖 JQuery click()

转载 作者:行者123 更新时间:2023-11-28 20:25:09 25 4
gpt4 key购买 nike

this question 的后续内容

编辑

JSFiddle code

正如您所看到的,如果运行代码,按钮文本不会改变,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;
}

不幸的是,no way to predict the order在同一元素上执行同一事件的事件处理程序的数量。

作为快速解决方案,我可以建议:

Demo

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();
});

关于javascript - 内联 onclick 覆盖 JQuery click(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17553167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com