2012-11-05 56 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