javascript change form onsubmit dynamically

五迷三道 提交于 2019-12-01 02:16:44

问题


I have a form with some action and onsubmit values, which is submitted through a submit input tag. The problem is that it should be submittable by two buttons, so I wrote a function for the second button to change the action and onsubmit values of the form:

<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;
}

After clicking on the Compare link it sends me to the anotherAction.php page correctly, but even when I have more than 2 selected checkboxes (which is the validation rule). Can somebody help me make the onsubmit function work correctly?


回答1:


In submitCompare(), you explicitly and unconditionally call

 document.myForm.submit();

What you probably want instead there is

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



回答2:


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

should be

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

Returning false on a submit will just end any further function execution. You want to preventDefault submission behavior if you don't want it to submit.




回答3:


It is a late reply, but if someone else is looking at this...

instead of:

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

I think you wanted:

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


来源:https://stackoverflow.com/questions/11368000/javascript-change-form-onsubmit-dynamically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!