2014-10-20 47 views
-1

所以,我有這個代碼,但似乎沒有按預期工作。Javascript Empty check

function validateForm() { 
    var x = document.forms["reg"]["username","password","first_name","last_name","age","mail"].value; 
    if (x==null || x=="" || x==0) { 
     alert("All fields must be filled out"); 
     return false; 
    } 
} 

如果我將任何字段留空,我會收到警報。除了最後一個。如果我填寫郵件以外的每個字段,我可以繼續。如果我只填寫郵件,我也可以繼續。

它如何檢查除最後​​一個之外的所有字段?

或者可能有更簡單的方法來檢查字段是否填充? (我實際上使用PHP,但不知何故if(empty($_POST['username'])的東西不再工作,所以我想用JS,因爲無論如何它看起來更好的警報消息。

+1

爲什麼地獄人們會在我的問題上給我-1?想知道我做錯了,如果它不符合你的標準... – Xereoth 2014-10-20 15:14:41

+0

@喬治好吧,它確實。我可以將所有以前的字段留空,並且我每次都會收到警告消息。除了郵件領域。它不會給我一個警告消息,如果我留下一個空的或只填寫郵件字段。 – Xereoth 2014-10-20 15:16:06

+3

代碼在技術上是有效的,但它不會做你認爲它的作用。函數的第一行實際上只是'var x = document.forms.reg.mail.value;' - 它只能真正檢查一個字段。 – Pointy 2014-10-20 15:17:06

回答

0

你需要將你的函數打斷一點 - 把字段名放入一個數組中並逐一循環。正如評論中所述,空檢查不是必需的。

function validateForm() 
{ 
    var fields = ["username", "password", "first_name", "last_name", "age", "mail"]; 
    for(var i = 0; i < fields.length; i++) 
    { 
     var fieldName = fields[i]; 
     var x = document.forms["reg"][fieldName].value; 
     if (x == "" || x == 0) { 
      alert("All fields must be filled out"); 
      return false; 
     } 
    } 
} 

你也應該做在你的PHP代碼相同的驗證,因爲有人可以輕鬆地禁用JavaScript和這樣的數據將不都得到驗證。

+0

天才!我在編程方面盡我所能,但不知何故,我無法自己想這樣的事情......我總是嘗試它太難或太容易..你的幫助非常感謝! – Xereoth 2014-10-20 15:24:26

0

你不能在數組中獲得整個事情!相反,你需要以不同的方式做到這一點只需要在mail一個因爲這是最後一個在列表所以,你可以這樣做:。

x = []; 
x.push(document.forms["reg"]["username"].value); 
x.push(document.forms["reg"]["password"].value); 
x.push(document.forms["reg"]["first_name"].value); 
x.push(document.forms["reg"]["last_name"].value); 
x.push(document.forms["reg"]["age"].value); 
x.push(document.forms["reg"]["mail"].value); 

而且你已經建立了一個數組,你需要請檢查其中的""0值。您需要編寫一個PHP的函數,如in_array()到JavaScript以檢查空值和0值。

而不是所有這些麻煩,你可以愉快地使用jQuery表單驗證器插件,它很好地工作。