2012-10-16 184 views
0

我試圖驗證表單,但沒有標籤,所有消息都在同一個輸入中。使用jQuery輸入表單驗證

我有我想要的HTML工作,但與jQuery我有elseif和其他問題。

我想說:
- 如果輸入名字仍然命名給該郵件名稱丟失(這似乎工作)
- 如果輸入地址仍是解決給郵件地址丟失(它不工作)
- 如果輸入地址和輸入名稱沒有地址或名稱提交表單(它不工作)

我這裏的例子:http://jsfiddle.net/4ervc/20/

HTML:

<form id="form" action="#"> 
    <input type="text" name="name" id="name" value="name" 
    onfocus="if (this.value=='name'||'name is missing') this.value = '';" 
    onblur="if (this.value=='') this.value = 'name';" /> 
    <br /> 

    <input type="text" name="address" id="address" value="address" 
    onfocus="if (this.value=='address'||'address is missing') this.value = '';" 
    onblur="if (this.value=='') this.value = 'address';" /> 
    <br /> 

    <input type="submit" name="submit" id="submit"> 
</form> 

JQUERY:

$(function(){ 

    $("#form").submit(function (e) { 

     if ($('#name').val("name")) { 
      e.preventDefault(); 
      $('#name').val("name is missing"); 
     }else if ($('#address').val("address")) { 
      e.preventDefault(); 
      $('#address').val("address is missing"); 
     }else{ 
      $("#form").submit; 
     } 

    }); 

}) 

回答

0

與原代碼的幾個問題:

  1. 您提交的呼叫$("#form").submit;是不正確的,應該是$("#form").submit();
  2. 因爲你正在使用IF-ELSEIF邏輯,您的驗證只是驗證地址字段如果名稱字段是正確的。它應該每次驗證所有字段。
  3. 你應該使用$('#name').val() === 'name',不$('#name').val('name')

下面通過一個簡單的標誌,並分別檢查各個領域解決這些事情比較字段值。提交電話也是固定的。此外http://jsfiddle.net/4ervc/21/

$(function() { 

    $("#form").submit(function(e) { 

     //assume valid form 
     var valid = true; 
     if ($('#name').val() === 'name') { 
      e.preventDefault(); 
      $('#name').val('name is missing'); 
      valid = false; 
     } 

     if ($('#address').val() === 'address') { 
      e.preventDefault(); 
      $('#address').val('address is missing'); 
      valid = false; 
     } 

     if (valid) { 
      $('#form').submit(); 
     } 

    }); 
}); 

- 只是一張紙條上的代碼味道 - 你應該嘗試一直貫穿腳本,以使用單個或雙引號:

試試這個。你已經使用了一些不理想的(但將工作)。

+0

你好!這很好,很好的解釋。非常感謝。最後一件事:我如何在這種情況下驗證電子郵件?如:如果該字段有@和。 – Nrc

1

您設置一個值 「名」

嘗試使用此:

$( '#名稱')VAL()==。 「name」

你內部如果陳述

+0

我在這裏嘗試它,它似乎並沒有工作?:http://jsfiddle.net/4ervc/19/ – Nrc

+0

,因爲你改變de消息..你必須改變只有如果這樣的條件[jsfiddle .net/4ervc/22](http://jsfiddle.net/4ervc/22) – Markomafs

+0

好吧,現在我明白了。謝謝!。這是我在我的代碼 – Nrc