javascript动态更改Submit上的表单
我有一个带有一些action和onsubmit值的表单,它是通过提交输入标签提交的。问题是它应该由两个按钮提交,所以我为第二个按钮编写了一个函数来更改表单的action和onsubmit值: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";
<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为我找到了正确的解决方案,所以案例结束:)非常感谢,这样简化了整个想法,并且实际可行!你节省了我宝贵的最后一分钟时间