2012-02-21 67 views
0

我想獲得一個ajax請求來勾選一個框,如果返回一定的值。ajax複選框調用

基本上我有以下代碼:

 for(var id in data) {   
       $(id).val(data[id]); 
       if($(newsletter).val(data[newsletter])) { 

         $('#newsletter').prop('checked', true); 

       } 
    } 

現在,我已經試過下面的代碼並沒有骰子。然而

for(var id in data) {   
       $(id).val(data[id]); 
       if($(newsletter).val(data[newsletter] == 1)) { 

         $('#newsletter').prop('checked', true); 

       } 
    } 

這將蜱任何結果的複選框,如果返回值是1,我想它再勾選如果另一個返回值是我想它不會被選中。

如果我做錯了什麼,請讓我知道,因爲我是jQuery和stackoverflow的新手。

+0

在第一種情況下,您在$('#newsletter')後寫了'$(newsletter)'。爲什麼?他們是不同的對象?在哪裏id通訊定義? 「data」包含什麼?代碼的其餘部分在哪裏?更加詳細一些! – papaiatis 2012-02-21 07:43:06

回答

0

也許這可能工作:if($(newsletter).val() == 1... 或:if(data[newsletter] == 1)...

看來你是有缺失的分配: 也許你的意思是var newsletter = $(id).val(data[id]);我不能弄明白。請解釋一下,通訊是如何聲明的。

+0

嗨,從json返回的數組是:'$ arr = array('input#fname'=> $ fname,'input#lname'=> $ lname,'#emailAddress'=> $ email,'#newsletter '=> $ newsletter); echo json_encode($ arr);'所以代碼本身通過json來自PHP。 – 2012-02-22 07:29:59

0

我打算假設data是通過AJAX返回的對象,而data[newsletter]是訪問該對象某些屬性的有效方式,您需要檢查該對象的值。

如果是的話,那麼下面應該工作:

if (data[newsletter] === 1) { 
    $('#newsletter').prop('checked', true); 
} 

此外,該代碼if($(newsletter).val(data[newsletter] == 1)) {是設置它檢查是否有值的原因是因爲你實際上是用if測試是返回值來自.val()調用,這是一個jQuery對象,,即使沒有與選擇器匹配的元素,它總是會評估爲true。

Protip:如果您想檢查jQuery選擇器是否與任何元素匹配,請測試.length屬性。

例如

if ($('.my_selector:eq(0)').length) { 
    alert('Found one!'); 
}