点击功能有问题

时间:2012-01-31 16:47:39

标签: javascript jquery forms click submit

$('#delete').click(function (e) {
    e.preventDefault();
    var result = true;
    if($('.checkbox:checked').length < 1) {
        $.notifyBar({
            cls: "error",
            html: 'At least 1 checkbox must be checked.',
            delay: 5000
        });
        result = false;
    }
    return result;
});

问题是如果一切顺利,按钮不会提交表格 有什么不对吗?

4 个答案:

答案 0 :(得分:2)

e.preventDefault()的调用阻止了提交表单的按钮的默认操作。当您不希望提交时,您只需要调用它。

$('#delete').click( function(e) {
  if($('.checkbox:checked').length<1){
    $.notifyBar({
      cls: "error",
      html: 'At least 1 checkbox must be checked.',
      delay: 5000
    });

    // Invalid, stop the submit
    e.preventDefault();
  }
})

答案 1 :(得分:1)

我认为这就是你要做的事情:

$('#delete').click(function (e) {
    var result = true;

    if($('.checkbox:checked').length < 1) {
        $.notifyBar({
            cls: "error",
            html: 'At least 1 checkbox must be checked.',
            delay: 5000
        });
        result = false;
    }

    if(!result) e.preventDefault();
});

e.preventDefault();的调用将阻止提交按钮提交,无论您从函数返回什么。在我的编辑中,只有在结果为false时才会阻止默认操作。

答案 2 :(得分:0)

即使返回e.preventDefault();,使用true也会停止提交表单。

答案 3 :(得分:0)

您应该将它放在onsubmit处理程序而不是单击处理程序中。另外,确保您希望它们单击的按钮的类型为submit:

 function doSubmit()
 {
    var result = true;

    if($('.checkbox:checked').length < 1) {
        $.notifyBar({
            cls: "error",
            html: 'At least 1 checkbox must be checked.',
            delay: 5000
        });
        result = false;
    }

    return result;
  }


 <form onsubmit="return doSubmit()">

     Checkboxes....

     <input type="submit" value="submit" />
 </form>