2010-09-09 55 views
0

我有兩個文本字段爲必填項,其餘字段爲正常。現在我必須檢測輸入密鑰並提交表單。我已經這樣做了,但問題是,當發生錯誤(例如:字段爲空),那麼我必須停止提交表單,但仍然是表單提交。輸入密鑰檢測+空值然後不應提交表格

<input autocomplete="off" type="text" id="first_name" size="10" 
onkeypress="if(event.keyCode == 13){ 
document.getElementById('btn_search').click(); 
return false;}"> 

這裏btn_search是搜索按鈕的ID,我必須執行它。但是當字段爲空時,表單不應該被提交。給我一些建議?

即使我在JavaScript文件中創建單獨的函數,我也得到了相同的響應。 其實我最近48小時面臨這個問題。

回答

1

最後,我解決了這個問題。在這裏,解釋 我錯過的東西,是返回值。這裏「btn_search」是按鈕的id,通過它調用一個單獨的函數。我在其中提出了驗證。 現在整個代碼粘貼在這裏。請看一看。

<input autocomplete="off" type="text" id="first_name" 
onkeypress="return enterKeyPress(event);" /> 

JavaScript函數

//Enter-listener 
function enterKeyPress(e) 
{ 
    if (e.keyCode == 13) { 
     document.getElementById('btn_search').click(); 
     return false; 
     } 
    } 

非常感謝您的建議。

+0

Rahul:請考慮使用Darin推薦的表單的onsubmit函數。這是進行表單驗證的標準方式。它涵蓋了在該字段中按下的「輸入」,並且按鈕被點擊而沒有任何您在此顯示的代碼是必要的。 – 2010-09-09 12:19:11

+0

@Skip Head:我不是說達林兄弟是錯的,但根據我的要求,我必須這樣做。否則達林的建議對我來說修改我的更多代碼是非常有幫助的。謝謝親愛的 – Rubyist 2010-09-09 12:25:02

0
document.getElementById('btn_search').click(function() 
{ 
if($('#first_name').val() == "") { 
// submit form here 
} 
}); 

這將檢查「first_name」的值是否爲空。它不會爲空,因爲它是一個文本框。或者你想在提交表單之前檢查文本框的存在嗎?

3

我會建議你在表單的onsubmit動作進行確認,而不是在輸入操作按鍵:

<form action="/foo" onsubmit="return validate();"> 
    <input autocomplete="off" type="text" id="first_name" size="10" /> 
    <input type="submit" value="Search" /> 
</form> 

而在你validate功能:

function validate() { 
    var firstName = document.getElementById('first_name').value; 
    var isFormValid = (firstName != ''); 

    return isFormValid; 
} 
+0

實際上,當用戶按ENTER鍵時,表單應該被提交。在運行驗證之前應檢查它是否爲空。 – Rubyist 2010-09-09 10:47:13

+3

@Rahul,這正是我的代碼所說明的。 – 2010-09-09 10:58:10

0

你可以這也是:)

<input autocomplete="off" type="text" id="first_name" size="10" onkeypress="if(this.value.replace(/^\s+|\s+$/g,'') != '' && event.keyCode == 13){ document.getElementById('btn_search').click(); return false;}"> 
0

只需將它添加到onsubmit活動形式

<form action="http://google.com" onsubmit="return (document.getElementById('first_name').value != '')"> 
    <input autocomplete="off" type="text" id="first_name" size="10" /> 
</form>​ 

return (document.getElementById('first_name').value != '')只是返回一個布爾值狀態input元素,如果它的空布爾是假那裏的的onsubmit會失敗,從而導致用戶首先進入的一些細節。

+0

朋友,按照用戶按Enter鍵的要求,我必須調用提交表單的函數。所以應該使用按鍵來檢測密鑰,然後該功能將把呼叫轉移到提交事件。 – Rubyist 2010-09-09 12:15:25

+0

好吧,如果你按任何輸入元素來初始化提交事件,並且當它被解僱時,提交被解僱,所以這沒有什麼不同。 – RobertPitt 2010-09-09 13:54:32