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、フォーカスがテキストフィールドに戻るようにしたいです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

4

3 に答える 3

2

ただidあなたのためのフォームを与えて、それをで参照してくださいdocument.getElementById('form_id')nameこのコンテキストでの属性の使用は、10年以上前に非推奨になりました。またname、forは、ではなく、useまたはsthinput以外のものである必要があります。"name"username

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();
    }
}

のを取得する代わりにid、引数としてtoをform渡すこともできます。次に、その引数をイベントハンドラーのとして使用します。formvalidate()onblur="validate(this);"form

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()イベントで関数を実行したいonblur。スクリプトでは、フォーカスするためのコードを記述しましたが、関数に追加していません。

于 2013-02-20T07:57:26.080 に答える
0

これを試してくださいdocument.frm.username.focus();。私はそれがうまくいくことを願っています。

于 2013-04-14T13:08:23.523 に答える