6

我有一个带有一些操作和 onsubmit 值的表单,它是通过提交输入标签提交的。问题是它应该可以通过两个按钮提交,所以我为第二个按钮编写了一个函数来更改表单的 action 和 onsubmit 值:

<a href="javascript:submitCompare()" class="submit">Compare</a>

function submitCompare()
{
    document.myForm.action = "anotherAction.php";
    document.myForm.onsubmit = function() {return countChecked()};
    document.myForm.submit();
}

function countChecked()
{
  var n = $(".reports input:checked").length;
  if (n >= 3 ) {
    alert ('You must select less than 3 reports.');
    return false;
  }
  else return true;
}

单击比较链接后,它会正确地将我发送到 anotherAction.php 页面,但即使我有超过 2 个选中的复选框(这是验证规则)。有人可以帮助我使 onsubmit 功能正常工作吗?

4

3 回答 3

6
document.myForm.onsubmit = function() {return countChecked()};

应该

document.myForm.onsubmit = function( e ) {
   e = e || window.event;
   if ( !countChecked() ) {
       e.preventDefault();
       e.returnValue = false;
   }
};

在提交时返回 false 只会结束任何进一步的函数执行。如果您不想提交,则希望阻止默认提交行为。

于 2012-07-06T18:52:15.837 回答
4

这是一个迟到的回复,但如果其他人正在看这个......

代替:

document.myForm.onsubmit = function() {return countChecked()};

我想你想要:

document.myForm.setAttribute("onsubmit", "return countChecked()");
于 2014-08-09T14:42:53.833 回答
1

submitCompare()中,您明确且无条件地调用

 document.myForm.submit();

你可能想要的是

 if (countChecked()) {
   document.myForm.submit();
 }
于 2012-07-06T18:53:56.760 回答