2013-04-15 55 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