如果javascript验证失败,请关注文本字段

时间:2013-02-20 07:53:11

标签: javascript focus

我有这段代码:

<html>
    <head>
        <script type="text/javascript">
            function validate(){
                var name=document.frm.name.value;
                if(name.indexOf("A")==0){
                    alert(name);
                }
            }
        </script>
    </head>
    <body>
        <form name="frm" action="test.php">
            Enter name:<input type="text" name="name" onblur="validate()"/>
            Enter e-Mail:<input type="text" name="email" onblur=""/>
            <input type="submit"/>
        </form>
    </body>
</html>

在上面的代码中,我试图在失去焦点时验证文本字段。如果名称以A开头,则脚本正常工作。但我希望如果用户输入不以A开头的不同名称,它会将焦点返回到文本字段name。为此,我写了这个剧本:

<script type="text/javascript">
    var name = document.frm.name.value;
    if(name.indexOf("A") == 0){
        alert(name);
    }else{
        document.frm.name.focus();
    }
</script>

然后它不起作用。

任何人都可以帮忙我应该怎么做才能请求文本域name的焦点? 我对javascript只有一点了解。

3 个答案:

答案 0 :(得分:2)

只需为您提供id表单,然后将其引用至document.getElementById('form_id')。在此背景下使用name属性已在十多年前被弃用。 name的{​​{1}}也应该是input之外的其他内容,而不是使用"name"或某事。

<强> HTML

username

<强>的JavaScript

<form id="frm" action="test.php">
    Enter name:<input type="text" name="username" id="username" onblur="validate()"/>
    Enter e-Mail:<input type="text" name="email" id="email" onblur=""/>
</form>

您还可以将function validate(){ var form = document.getElementById('frm'); if (form.username.value.indexOf("A") === 0) { alert(name); } else { form.username.focus(); } } 传递给id作为参数:form,而不是检索form的{​​{1}}。然后在eventhandler中将该参数用作validate()

onblur="validate(this);"

修改

焦点似乎没有延迟,你可以试试这个(form有一个function validate(form){ if (form.username.value.indexOf("A") === 0) { alert(name); } else { form.username.focus(); } } ):

input

答案 1 :(得分:1)

像这样修改你的脚本

   <html>
    <head>
        <script type="text/javascript">
            function validate(){
                var name=document.frm.name.value;
                if(name.indexOf("A")==0){
                    alert(name);
                }
            }
        </script>
    </head>
    <body >
        <form id="frm" action="test.php">
            Enter name:<input type="text" name="username" onblur="validate()"/>
            Enter e-Mail:<input type="text" name="email" onblur=""/>
            <input type="submit" onclick="check()"/>
        </form>
        <SCRIPT LANGUAGE="JavaScript">
        <!--
        function validate()
        {
            var name = document.getElementById('frm').username.value;
            if(name.indexOf("A") == 0){
                alert(name);
                        document.getElementById('frm').email.focus();
             }else{
                document.getElementById('frm').username.focus();
            }
        }
        function check()
        {
            var name = document.getElementById('frm').username.value;
            if(name.indexOf("A") == 0){
             }else{
                alert("Please enter a name starting with 'A'");
                     document.getElementById('frm').username.focus();
            }
        }
        //-->
        </SCRIPT>
    </body>
</html>

您想在事件validate()上执行功能onblur。在脚本中,您已经编写了用于聚焦的代码,但未将其添加到函数中。

答案 2 :(得分:0)

试试这个document.frm.username.focus();。我希望它能奏效。