制作表单';s onsubmit仅适用于特定提交


Making form's onsubmit to work only for particular submits

在PHP程序中,我有JS函数来验证提交<form ...onsubmit='return isOK();'>。它还可以。问题是我希望它只适用于特定提交,而不是所有提交。JS函数内部有没有任何方法可以找出按下了哪个提交,或者一些PHP技巧

instead of onsubmit u can use onClick.
<input type="submit" onclick="return pressSubmit1()" value="submit1" />
<input type="submit" onclick="return pressSubmit2()" value="submit2" />
<form action="action.php" method="post">
    ...
    <input name="submit" type="button" value="check me" onclick="submitform('check')" />
    <input name="submit" type="button" value="do not check me" onclick="submitform('not check')"/>
</form>

在javascript:中

 function submitform(check)
 {
    if(check=='check') checkfrom();
 }

PHP

if($_POST['submit']=="check me")
 checkform();
<form class="allowed" onsubmit='return isOK();'>
----
function isOK() {
    if($(this).hasClass('allowed')) {
        // Do stuff
    }
}

您的问题不清楚,您使用的是单个提交按钮还是不同的按钮。如果您使用不同的提交按钮,那么您当然可以根据提交按钮的id进行检查。另一方面,如果是单个提交按钮,则取决于提交或不提交的条件

最好编写一些正在使用的HTML和Java脚本代码。所以,很容易纠正您在代码片段中所犯的错误。

我们可以使用PHP检查点击了哪个提交按钮。在表单提交对应的PHP页面中,编写

如果(extract($_POST)&amp;isset($submitbtn1)){

// some validation for first submit button

}elseif(摘录($_POST)&amp;isset($submitbtn2)){

// some validation for second submit button

}

注意:我们可以在提取函数中使用$后跟submit按钮名称。即$submitbtn1与$_POST['submitbtn1']相同

是的,不同的onclick看起来很好,正如接受的答案中提到的那样。但是在事件处理程序中,您应该代码如下。注意preventDefault。另外,由于submit是提交表单的按钮。您可以使用按钮类型而不是提交类型,因此不需要preventDefault。这是代码的链接http://jsbin.com/wikose/4/

  function testlogin(){
      event.preventDefault();
      var test = 'not validated';
      if(test === "validated")
      alert("not valid login");
      else
        $('form').submit();
      return false;
    }