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

通过将tabindexdiv 的属性设置为 -1,您可以以编程方式将焦点传递给它。(向下滚动到MDN 文章中的 tabindex 以获取更多详细信息)

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

vp 是一个 div。没有可用的焦点。(实际上似乎有一个负的tabindex,谢谢西蒙)

您可以使用滚动到错误

vp.scrollIntoView(); 

您可以关注表单字段,因此如果您将字段分配给 x imstead ofnits 值,您可以使用x.valuex.focus()

于 2012-11-05T15:53:58.837 回答
0

“x”变量包含“member_email”字段的值。如果你想使用x.focus();,你应该添加:

var x = document.survey.member_email;

然后使用:x.value检查'x'。

于 2012-11-05T16:03:45.690 回答