2014-06-09 53 views
0

似乎在驗證工作上有點麻煩。 使用「z」&&(「x」||「y」)的Javascript表單驗證

目前想實現一個系統,如果一個變量是假的用戶重定向,以及表單包含0000或1111

例子:

if xml_response == "false" && form == ("0000" || "1111") { 
    window.location.replace(""); 
} else { 
    submit.form 
} 

我已經能夠得到它的工作爲0000.如果XML生成false,並且表單包含0000,則成功重定向。

如果XML生成false並且表單包含1111,則沒有骰子。我認爲這與我如何格式化我的操作員有關。有任何想法嗎?

這裏是我的發言:

if (response == "false" && document.forms['Form'].id.value==("0000" || "1111")) { 
window.location.replace("http://url/"); 
} else { 
document.getElementById("submit_form").submit(); 
} 
+0

表達式'(「0000」||「1111」)'計算爲'「0000」'。如果「||」操作符具有「truthy」值(例如,在if語句中認爲該值爲真),則返回它的左側操作數,否則返回右側操作數。 –

+0

感謝您的啓發! –

回答

2

這是無效的,你必須檢查你正在檢查的字符串錯誤和字符串看起來像數字的每個值分別

if ((xml_response == "false") && (form == "0000" || form == "1111")) { 
    window.location.replace(""); 
} else { 
    submit.form 
} 

注意。

還有檢查數組多個值

if ( 
    (response == "false") && 
    (['0000','1111'].indexOf(document.forms['Form'].id.value) != -1) 
    ) 
{ 
    window.location.replace("http://url/"); 
} else { 
    document.getElementById("submit_form").submit(); 
} 

或選項甚至

/(0000|1111)/.exec(document.forms['Form'].id.value) 
+0

還有'document.forms ['Form']。{'0000':'','1111'中的id.value:''}'和'/0000|1111/.test(document.forms['Form' ] .id.value)'。 – RobG

+0

這樣做。數組檢查正是我所期待的。經過測試和工作。謝謝! –

0

需要注意的是:

document.forms['Form'].id.value 

將嘗試查找文檔中的表格名稱或ID爲「Form」。如果找到它,它將訪問它的ID屬性,它是一個字符串,並嘗試讀取它的值屬性。字符串沒有「value」屬性,所以結果將是值undefined

相關問題