2013-08-27 115 views
0

改變的CSS多個輸入我有具有相同名稱的多個輸入和支架等的一種形式:我使用的括號驗證與AJAX/JQUERY和輸入

<input name=foo[] id=foo[]/> 

處理輸入作爲陣列與PHP,並且因爲輸入的數量不固定。

我試圖添加一些表單驗證與AJAX/JQUERY,因爲每個輸入必須包含一個已經在數據庫中的值。一旦選中,我想將輸入的CSS更改爲綠色,如果正確則更改爲紅色,如果輸入錯誤則更改爲紅色。

AJAX的部分工作,但我不能讓JQUERY改變單獨輸入的CSS(所有輸入改變);

下面是我使用的代碼:

<script> 
    $(document).change(function() { 
    $('input[id="foo[]"]').each(function() { 
     $(this).change(validate); 
    }); 
    }); 

    function validate() { 
    var foo = $(this).val(); 
    if(foo == "" || foo.length < 4) { 
     $('input[id="foo[]"]').css('border', '3px #C33 solid'); 
    } else { 
     jQuery.ajax({ 
     type: "POST", 
     url: "common/check.php", 
     data: 'foo='+ foo, 
     cache: false, 
     success: function(response) { 
      if(response == 0) { 
      $('input[id="foo[]"]').css('border', '3px #C33 solid'); 
      } else { 
      $('input[id="foo[]"]').css('border', '3px #00FF00 solid'); 
      } 
     } 
     }); 
    } 
    } 
</script> 

感謝您的幫助!

+0

'$('input [id =「foo []」]').css('border','3px solid#C33');' –

+0

它不是一個很好的做法, –

回答

0

我已經修改了你的代碼試試這個:。

$('input[id="foo[]"]').change(function() { 
    var foo = $(this).val(); 
    var fooInput = $(this); 
    if(foo == "" || foo.length < 4) { 
     fooInput.css('border', '3px #C33 solid'); 
    } else { 
     jQuery.ajax({ 
     type: "POST", 
     url: "common/check.php", 
     data: 'foo='+ foo, 
     cache: false, 
     success: function(response) { 
      if(response == 0) { 
      fooInput.css('border', '3px #C33 solid'); 
      } else { 
      fooInput.css('border', '3px #00FF00 solid'); 
      } 
     } 
     }); 
    } 
    }); 

這裏的FIDDLE

注意:避免與有元素相同的ID,當你的項目擴展時,它會讓你頭痛,

+0

非常感謝它,它完美的工作! –

+0

關於ID的...這將是一個更好的做法? –

+0

您應該使所有元素ID唯一。如果您想指定一組元素,請改用'CLASS'。 –

1

嘗試刪除「「」

$('input[id=foo[]]').css('border', '3px #C33 solid'); 
+0

謝謝,我編輯了我的問題,因爲它不夠清楚。 CSS做了改變,但在所有輸入中,我想相應地單獨更改它。 –