【问题标题】:onsubmit="return formValidate():" if false also the form submitsonsubmit="return formValidate():" 如果 false 也提交表单
【发布时间】:2014-01-16 08:51:41
【问题描述】:

这是一个example.html文件

<form name="test1" onsubmit="return formValidate();" action="test.html" method="post">
<input type="text" name="name"/>
<input type="submit" value ="Submit"/>

这是一个 html 文件的代码,其中有一个文本字段和一个提交按钮。
下面的代码是 test.html 的代码,验证成功后表单继续。

<body>
    <p>hii </p>
</body>

我的验证表单的javascript函数如下:formValidate.js

function formValidate(){
    var uname=document.test1.name; 
    if(alpha(uname))
    {
    }
    return false;
}
function alpha(uname){
    var pattern=/(?![0-9]*$)[a-zA-Z0-9]+$/;
    if(uname.value.match(pattern))
    {
        return true;
    }
    else
    {
        alert("Invalid input: only numeric not accepted");
        uname.focus();
        return false;
    }
}

这是我的验证代码,如果它返回 false,它应该抛出一条警告消息,说明输入无效。那工作正常。但是当它返回 false 时,我希望表单不会提交到下一页。 我该怎么做?

【问题讨论】:

  • 你打错了:这里应该是等式符号而不是破折号:var uname = document.test1.name;
  • 打字错误先生感谢您的通知:)

标签: javascript html forms


【解决方案1】:

添加到 onsubmit 事件:

<form onsubmit="return formValidate(event);"

而且您的代码中有语法错误。我修好了,试试这个:

function formValidate(e){
    var uname = document.test1.name;// fix - to =

    if(alpha(uname)) {
        //some code here?
    } else {
        e.preventDefault();
        return false;
    }

}

function alpha(uname){
    var pattern = /(?![0-9]*$)[a-zA-Z0-9]+$/;//remove *
     if(uname.value.match(pattern)) {
        return true;
     } else {
         alert("Invalid input: only numeric not accepted);
         uname.focus();
         return false;
     }
 }

【讨论】:

  • 我修正了语法先生验证正在完美地发生,但是如果它为假,则返回img也将formm重定向到下一页
  • 谢谢你先生。我是否将 onsubmit 添加到表单标签或提交先生的输入标签?
  • 会试试先生。谢谢你:)
【解决方案2】:

试试这个

<form name="test1" action="test.html" methos="post"  onsubmit="return formValidate();">
<input type="text" name="name"/>
<input type="submit" value ="Submit"/>
</form>


function formValidate()
{
    var uname=document.test1.name; 
     var pattern=/(?![0-9]*$)[a-zA-Z0-9]+$/;
    if(uname.value.match(pattern))
    {
        return true;
    }
    else
    {
        alert("Invalid input: only numeric not accepted);
        uname.focus();
        return false;
    }
}

【讨论】:

  • 我试过同样的先生,但它不起作用。如果验证失败并向 onsubmit 返回 false,它仍然会将我定向到我不想要的 test.html 页面。如果验证失败,我希望它留在同一页面中。
  • 然后检查它是否返回 false 或 true
  • 它返回 false 只是因为警报消息正确显示了无效输入的消息。 onsubmit 的一些问题
  • 你只是在 if(alpha(uname)) { //code return true; } 否则返回 false;
  • 试试我的答案。改变一下
【解决方案3】:
   var uname = document.getElementsByName('name'); 

您会得到数组 uname,其唯一成员位于位置 [0]。
     if (alpha(uname[0]))
       {
            return true;
       }else{
            return false;
       }
     

等等....它有效!

【讨论】:

    猜你喜欢
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    相关资源
    最近更新 更多