2012-02-02 66 views
-1
$(document).ready(function() {  
    $("#bcscan").submit(function (e) { 
     e.preventDefault(); 
     if($("select").val() === '#') { 
      $(this).addClass("warning"); 
     } 
     else { 
      ajaxPost(); 
     } 
    }); 

}); 

下面的函數,我怎麼可以修改它來添加warning類,如果select元素的值的一個=「#」?添加類,如果一個選擇的價值是我使用#

目前它添加警告類都選用

+0

在這種情況下'this'指的是什麼? – 2012-02-02 19:30:03

回答

3

我想這可能是你想要什麼:

$('select').filter(function() { 
    return ($(this).val() === '#'); 
}).addClass('warning'); 

選擇所有select元素,對其過濾下降到其當前值等於#,然後增加warning類子集的那些元素。


我會在這裏留下我的原始答案,但考慮到問題的變化可能不再相關。這是我最後一次猜測什麼是你想要的 - 如果這對你有用,很好;如果沒有,哦,好吧。

$(document).ready(function() {  
    $("#bcscan").submit(function (e) { 
     e.preventDefault(); 
     var doAjaxPost = true; 
     $('select').each(function() { 
      if($(this).val() === '#') { 
       doAjaxPost = false; 
       $(this).addClass('warning'); 
      } 
     }); 
     if(doAjaxPost) { 
      ajaxPost(); 
     } 
    }); 

}); 

來檢查當表單提交的所有select元素 - 其中是否有#值時,它會將warning類是選擇元素。如果它們中沒有一個值爲#,則繼續並調用ajaxPost()函數。

+0

檢查我更新的問題。在哪裏使用你的功能? – heron 2012-02-02 19:37:26

+0

似乎您的解決方案是唯一一個與現在的問題相匹配的解決方案。 +1 – TimWolla 2012-02-02 19:38:59

+0

但是如何調用這個函數?它將被腳本自動調用。但我想從這個函數獲得返回值,並且如果通過ajax繼續發佈數據 – heron 2012-02-02 19:41:53

2
$('select').change(function (event) { 
    if ($(this).val() === '#') $(this).addClass('warning'); 
}); 

this填充了觸發事件的元素。在這種情況下選擇。

演示:http://jsfiddle.net/TimWolla/tNhKe/

編輯匹配的問題:

$(document).ready(function() {  
    $("#bcscan").submit(function (e) { 
     e.preventDefault(); 

     var invalidCount = $('select').filter(function() { 
      return ($(this).val() === '#'); 
     }).addClass('warning').length; 

     if (invalidCount == 0) { 
      alert('valid'); 
     } 
    }); 

}); 

演示:http://jsfiddle.net/TimWolla/QxBH9/

+1

檢查我更新的問題 – heron 2012-02-02 19:34:18

+1

爲什麼後來更新問題時出現了一個「完全」不同的問題? – TimWolla 2012-02-02 19:35:25

+0

什麼是「完全不同」?同樣的事情,我要求 – heron 2012-02-02 19:36:25

相關問題