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 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它开头的名称将焦点返回到 textfield name。为此,我编写了这个脚本:

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

然后它不起作用。

任何人都可以帮助我应该怎么做才能请求 textfield 的焦点name
我只有一点点的知识javascript

4

3 回答 3

2

只需id为您提供表格并使用document.getElementById('form_id'). 在这种情况下使用name属性已在十多年前被弃用。也nameforinput应该是其他东西而不是"name", 而不是 useusername或 sth。

HTML

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

JavaScript

function validate(){
    var form = document.getElementById('frm');
    if (form.username.value.indexOf("A") === 0) {
        alert(name);
    } else {
        form.username.focus();
    }
}

除了检索 的idform您还可以将formtovalidate()作为参数传递:onblur="validate(this);"。然后将该参数用作事件处理程序form中的 a:

function validate(form){
    if (form.username.value.indexOf("A") === 0) {
        alert(name);
    } else {
        form.username.focus();
    }
}

编辑

焦点似乎没有延迟工作,你可以试试这个(input有一个id="username"):

function focusTo (elm) {
    elm.focus();
    return;
}

function validate(){
    var form = document.getElementById('frm');
    if (form.username.value.indexOf("A") === 0) {
        alert(name);
    } else {
        alert('error');
        setTimeout(function () {focusTo(form.username);}, 10);
    }
}
于 2013-02-20T08:03:50.193 回答
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()在 event上执行功能onblur。在脚本中,您编写了聚焦代码,但未将其添加到函数中。

于 2013-02-20T07:57:26.080 回答
0

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

于 2013-04-14T13:08:23.523 回答