2010-04-06 59 views
6

我試圖檢查表單輸入是否有任何值(無關緊要),這樣我就可以在提交時將值附加到操作URL上存在。我需要在添加值之前添加參數的名稱,並且只留下一個空白參數名稱,如「P =」,沒有任何值會使頁面混亂。如何檢查表單輸入是否有價值

這裏是我的代碼:

function getParam() { 

// reset url in case there were any previous params inputted 

    document.form.action = 'http://www.domain.com' 

    if (document.getElementById('p').value == 1) { 
     document.form.action += 'P=' + document.getElementById('p').value; 
    } 

    if (document.getElementbyId('q').value == 1) { 
     document.form.action += 'Q=' + document.getElementById('q').value; 
    } 

} 

和形式:

<form name="form" id="form" method="post" action=""> 
    <input type="text" id="p" value=""> 
    <input type="text" id="q" value=""> 
    <input type="submit" value="Update" onClick="getParam();"> 
</form> 

我心裏設定值== 1會做一個簡單的存在,無論什麼提交的值是不存在的檢查是的,但我想我錯了。

此外,我使用if語句,但我認爲這是錯誤的代碼,因爲我沒有別的。也許,使用switch語句,雖然我不確定我會如何設置它。也許:

switch(value) { 
    case document.getElementById('p').value == 1 : 
     document.form.action += 'P=' + document.getElementById('p').value; : 
    case document.getElementById('q').value == 1 : 
     document.form.action += 'Q=' + document.getElementById('q').value; break; 
} 
+0

你將不會提交任何東西,如果你輸入字段沒有名稱檢查更好。 – kennebec 2010-04-06 20:59:10

+0

是真實的,但在這種情況下,表單只是在那裏更新url,並且由於我通過id獲取這些輸入的值,所以並不是真的有必要。 – Choy 2010-04-06 21:07:52

+0

你知道你可以改變你的方法到'GET',並且這些值會被追加到查詢字符串中?您應該能夠毫無問題地處理服務器端的空值;你是什​​麼意思*弄亂頁面*? – RedFilter 2010-04-06 21:12:15

回答

13
var val = document.getElementById('p').value; 
if (/^\s*$/.test(val)){ 
    //value is either empty or contains whitespace characters 
    //do not append the value 
} 
else{ 
    //code for appending the value to url 
} 

P.S:它不是對value.length因爲' '.length = 3

+1

這似乎正好相反。當我將字段留空時,它會將P =沒有值(因爲它是空白的)附加到P =中,並且當我輸入內容時,它不會追加任何內容。 – Choy 2010-04-06 21:18:17

+0

:)如果if子句的結果爲false,那麼你應該追加 – 2010-04-06 21:22:01

+1

爲什麼不只是反轉if,因爲一個分支是空的? 'if(!/^\ s * $ /。test(val)){// ...' – CMS 2010-04-06 21:30:40