0

HTMLフォームの検証スクリプトを書いています。このスクリプトにより、エラーのリストがドキュメントの上部に表示されるため、ユーザーはエラーを一度にすべて表示(および修正)できます。検証スクリプトの実行後にドキュメントがリロードされたときにフォーカスをそのエラーリストに移動したいのですが、これは機能していません。天国は私が理由を理解できないのを助けてくれます。ヒントをいただければ幸いです。ありがとうございました!

これがJSです

function validate(survey) {
    var error=document.createElement("text");
    error.innerHTML=" ";

    var x=document.survey.member_email.value;
    if (x==null || x=="")  {
        error.innerHTML+="<li>Please enter an email address</li>" 
        var vp=document.getElementById("validate_place");
        vp.appendChild(error);
        vp.focus( );      //  Here is the focus command   -->//
        return false;
        } 
    return true;
}

そして、これがHTMLの検証行です。

<form action="survey_processing.php" method="post"  onsubmit="return validate(this);"  name="survey" id="survey" >

<div id="validate_place" > </div>  <!--- empty div to insert validation correction info if needed -->
4

3 に答える 3

1

vpはdivです。利用可能なフォーカスはありません。(実際には、Simonに感謝して負のtabindexがあるようです)

を使用してエラーまでスクロールできます

vp.scrollIntoView(); 

フォームフィールドにフォーカスできるので、フィールドを値の代わりにxに割り当てると、次のように使用できますx.valuex.focus()

于 2012-11-05T15:53:58.837 に答える
1

tabindexdivの属性を-1に設定することにより、プログラムでフォーカスを渡すことができるようになります。(詳細については、 MDNの記事でtabindexまでスクロールダウンしてください)

<div id="validate_place" tabindex="-1"> </div>
于 2012-11-05T16:01:31.973 に答える
0

'x'変数には、"member_email"フィールドの値が含まれています。を使用する場合はx.focus();、次を追加する必要があります。

var x = document.survey.member_email;

次に、:を使用x.valueして「x」をチェックします。

于 2012-11-05T16:03:45.690 に答える