提交按钮上的验证

8

我有一个提交按钮如下:

<input class="create_button" name="commit" 
       onclick="return validate_activity();" 
       type="submit" value="Save">

我发现这个按钮无论validate_activity()返回true还是false,它都会向服务器发送请求。这里有什么问题吗?
更新:
实际上,我在validate_activity()中犯了一个错误,导致我认为它返回了false,但事实并非如此。

1
你能发布一下你在validate_activity()上的代码吗? - Emmanuel N
对,我在我的validate_activity()函数中犯了一个错误。 - Rocky
6个回答

10
尝试不使用返回值来执行相同操作,例如onclick="validate_activity();",并检查在无效情况下函数是否返回false。

1
这个代码也适用于提交按钮(<button>)而不是提交输入框(<input>)吗? - SpaceNinja
这并不会阻止任何人提交表单,例如在同一表单中按下输入字段上的Enter键。 - sean

4

试试这个...

<form action="...." onsubmit="submitForm()" name="form">

<input type="submit" value="Save">

</form> 


function submitForm(){

    if(validationfails){

        return false;
    }
    else  {
        document.form.submit();
        return true;
    }
 }

3
<input type="button" name="commit"
value="Save"
onclick="validate_activity(myform)" />

在 JavaScript 中,当验证通过时,执行 form.submit(),否则返回 false。
希望这能帮到您!这将验证您的表单并提交它。如果您的浏览器禁用了 JavaScript,则此提交将失败。
如果您希望在客户端浏览器中禁用 JavaScript(即不进行验证但仍然提交),则可以让提交继续进行。
<input type="button" name="commit"
value="Save"
onclick="validate_activity(myform);return false;" />

我希望您不会遇到任何验证问题。但是,JavaScript只是客户端,我希望您无论如何都会在服务器端进行严格的检查,并且很多时候,人们使用它进行基本的字段检查。


2

我猜问题出在 onclick="return validate_activity();" 上,当点击提交按钮时,这个返回语句就会被执行(不是返回false)。 正确的方法是使用 onclick="validate_activity();" 并在 validata_activity 函数中返回false,这将停止默认的提交行为。


2
您应该使用表单的submit事件进行验证。
<form action="..." method="..." onsubmit="return validate_activity()">
    <...>
    <input class="create_button" name="commit" type="submit" value="Save" />
    <...>
</form>

2
如果你正在进行表单验证,并在按钮的 onclick 事件上进行验证,那么你现在所尝试的方式并没有任何意义,更好的方法是在 <form></form>onsubmit 事件上使用它,像这样。
<form action="someURL" method="post" onsubmit="return validate_activity();">

</form>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接