javascript动态更改Submit上的表单

javascript动态更改Submit上的表单,javascript,validation,checkbox,checked,onsubmit,Javascript,Validation,Checkbox,Checked,Onsubmit,我有一个带有一些action和onsubmit值的表单,它是通过提交输入标签提交的。问题是它应该由两个按钮提交,所以我为第二个按钮编写了一个函数来更改表单的action和onsubmit值: <a href="javascript:submitCompare()" class="submit">Compare</a> function submitCompare() { document.myForm.action = "anotherAction.php";

我有一个带有一些action和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;
}

函数submitCompare()
{
document.myForm.action=“anotherAction.php”;
document.myForm.onsubmit=函数(){return countChecked()};
document.myForm.submit();
}
函数countChecked()
{
var n=$(“.reports输入:选中”).length;
如果(n>=3){
警报('您必须选择少于3个报告');
返回false;
}
否则返回true;
}
单击比较链接后,它会正确地将我发送到anotherAction.php页面,但即使我选择了两个以上的复选框(这是验证规则)。有人能帮我使onsubmit函数正常工作吗

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

document.myForm.onsubmit = function( e ) {
   e = e || window.event;
   if ( !countChecked() ) {
       e.preventDefault();
       e.returnValue = false;
   }
};
提交时返回false将结束任何进一步的函数执行。如果您不想提交默认的提交行为,则需要防止该行为。

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

 document.myForm.submit();
你可能想要的是

 if (countChecked()) {
   document.myForm.submit();
 }

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

而不是:

document.myForm.onsubmit = function() {return countChecked()};
我想你想要:

document.myForm.setAttribute("onsubmit", "return countChecked()");

只是附带说明一下,我认为
(n>2)
已经足够了,而不是
(n>=3)
尝试了它,但是提交过程的行为没有改变。可能是您的countChecked函数。尝试执行一些console.log以查看它是否获得了正确数量的CheckBoxesOntChecked()返回的正确值。我真的不知道为什么你的解决方案不起作用,但是@Otto Allmendinger为我找到了正确的解决方案,所以案例结束:)非常感谢,这样简化了整个想法,并且实际可行!你节省了我宝贵的最后一分钟时间