2012-11-05 60 views
0

我正在为HTML表单写一个验证脚本。该脚本会在文档的顶部显示错误列表,以便用户可以一次查看(并更正)所有错误。当验证脚本运行后文档重新加载时,我希望焦点转移到该错误列表,但这不起作用,天堂帮助我,我看不出为什么。任何提示将非常感激。谢谢!Javascript验证焦点

这里是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 --> 

回答

1

通过将div的tabindex属性设置为-1,您可以以编程方式将焦点传递给它。 (向下滚动在MDN article到TABINDEX有详细介绍)

<div id="validate_place" tabindex="-1"> </div> 
+0

这是我第一次听说tabindex,它看起来太棒了。感谢您的高举。 –

+0

@rebaelliott这是一个非常有用的工具,特别是当涉及到禁用可访问的网站时。 –

+0

这对我来说也是新闻。如何跨浏览器呢? – mplungjan

1

VP是一个div。没有可用的焦点。 (其实这似乎有一个负的tabindex感谢西蒙)使用

vp.scrollIntoView(); 

你可以专注表单域,所以如果你分配领域的X imstead ofnits值可以

您可以滚动到错误使用x.valuex.focus()

+0

谢谢@mplungjan!正如你所看到的,我对此很陌生。 。 。 scrollIntoView()完美工作。感谢您的帮助。 –

+0

我再接受一分钟。我认为有5分钟的延迟,因为我试图立即接受。 –

0

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

var x = document.survey.member_email; 

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

+0

啊 - 错过了价值 – mplungjan