2013-04-15 91 views
0

我有幾個複選框。基於JSON響應(通過ajax-requests加載數據),我使用.prop()函數設置並重設複選框的默認值。問題是,他們顯然不會改變這種行爲,如果我手動改變它們。我無法通過$('#checkbox:checked')。val()傳遞複選框的值,控制檯日誌顯示'undefined'。這是因爲.prop()函數嗎?我怎樣才能得到複選框的值?複選框被選中,但是:選中不起作用

如果您需要更多信息,我會很樂意提供。 這裏是一些代碼:

if (json.event.public_visible == 1) { 
    $('#event_public_visible').prop('checked', true); 
} else { 
    $('#event_public_visible').prop('checked', false); 
} 

if (json.event.package_event == 1) { 
    $('#event_package_only').prop('checked', true); 
} else { 
    $('#event_package_only').prop('checked', false); 
} 

更新:更多的代碼

var editEvent = function() { 
    if ($('#event_public_visible').is(':checked')) { 
    console.log('test'); 
    } 
    formData = { 
    // ... other fields 
    event_package_only: $('#event_package_only :checked').val(), 
    event_public_visible: $('#event_public_visible :checked').val(), 
    // ... more fields 
    }; 

    $.ajax({ 
    url: base_url + "admin/events/editAsync", 
    type: "POST", 
    data: formData, 
    dataType: "json", 
    success: function (json) { 
     // success handling 
    } 
    }); 
}; 
+2

它應該工作 - 發佈實際涉及的JavaScript,試圖使用':checked'的代碼。 – Pointy

+2

還要注意它應該是'$('#checkbox-id:checked')。val()',':checked'之前沒有空格。 – Pointy

+3

你試過.is(':checked')? – alix

回答

1

你跟「event_public_visible」和「event_package_only」的標識設置在元素屬性,然後試圖從一個元素閱讀的ID'複選框'。

您是不是想要使用它?

$('[type=checkbox]:checked').val() 

可以看到它在這裏工作:

http://jsfiddle.net/vRba3/

+0

'複選框'只是一個例子:)抱歉混淆寫作 –

+1

然後,它可能是您的空間之前:檢查選擇器,將其刪除。 – MasNotsram

+0

是的,這工作,感謝您的努力:) –

2

試試這個:$('#event_public_visible:checked').val()$('#event_public_visible:checked').val()

你可以試試:('#event_public_visible:checked').length ? $('#event_public_visible:checked').val() : '';

例子:http://jsfiddle.net/infernalbadger/SfcjG/

+1

這是':檢查'前的空間。謝謝你的回答,雖然:) –

+0

不客氣。 – Bagata