定义何时触发 onclick

Defining when onclick is fired

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

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

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

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

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

谢谢

$("#btn-default2").click(function(){
    $(this).off("click");
});

您问题的程序性答案,

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

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

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

$("form").validate({

  submitHandler: function(form) {

  }

});