定义 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 何时触发的主要内容,如果未能解决你的问题,请参考以下文章
Android:强制触发 textView 的 onClick()
dojo.dijit.Button 触发 onclick 事件两次