定义 onclick 何时触发

Posted

技术标签:

【中文标题】定义 onclick 何时触发【英文标题】:Defining when onclick is fired 【发布时间】:2016-08-08 13:38:37 【问题描述】:

我遇到了一些小问题。我有一个表单,我在系统中映射表单的字段。表单的按钮会自动获得类似这样的 onclick 事件

window.location='http://www.something.com/test.html?vs=ZWJhMDAzMzktMTNkYi00ODRkLTgxYmQtNjQwYTU5MDIyZWE3OzA6ODc5NjY2NzoxMjg2NzUyNDM3NDI6OTAxNzM0MzA1OjkwMTczNDMwNTsS1'

它添加了一个需要的 vs 变量。问题是我需要表单有一个输入类型按钮,而不是提交。我正在使用 JQuery 验证,我有这个来触发表单提交

$("#btn-default2").click(function() 
        $("#myform").submit();
    );

现在的问题是,由于 onclick 事件,验证会快速触发,然后 onclick 事件会进行重定向。如果表单有效,我只想要这个重定向。有什么方法可以停止 onclick 事件,并将其移动到我检查表单是否有效的函数中?

谢谢

【问题讨论】:

【参考方案1】:

为您的问题提供程序性答案,

var btn = $("button.validate");
var x = btn.attr("onclick"); //get the onclick and store it in a variable.
btn.attr("onclick", ""); //remove the onclick attribute for that button
btn.click(function() 
    //Now do validations for your button.
    if ($("input[type='text']").val() == "10")  
        eval(x); //If the form fields passed the validation
        //then trigger the redirect using eval
    
);

DEMO

【讨论】:

【参考方案2】:

如果您想利用 jquery 验证插件,那么您应该尝试使用提交处理程序。

submitHandler 是插件内置的回调函数。表单有效时处理实际提交的回调。获取表单作为唯一参数。替换默认提交。

$("form").validate(

  submitHandler: function(form) 

  

);

【讨论】:

【参考方案3】:
$("#btn-default2").click(function()
    $(this).off("click");
);

【讨论】:

以上是关于定义 onclick 何时触发的主要内容,如果未能解决你的问题,请参考以下文章

为啥连接的 onclick 事件不会触发?

Android:强制触发 textView 的 onClick()

js中onclick定义问题

dojo.dijit.Button 触发 onclick 事件两次

何时调用服务器 onClick 与 OnClientClick

动态创建标签onclick函数不会在jquery中触发