我正在尝试更改复选框状态,但似乎不起作用。 这是我的代码:
$.ajax({
url: 'includes/exproty.php',
type: 'post',
data: {
'product_id': '100'
},
success: function(data) {
var product_details = JSON.parse(data);
if (product_details.is_published) {
console.log("Works");
$("[name='active']").checked = true;
} else {
$("[name='active']").checked = false;
}
}
});
<div class="input_container">
<label>Active</label>
<input type="checkbox" name="active" />
</div>
使用console.log
内的if
来确认条件是否满足,并执行if
内的代码。
我也尝试过:
$("[name='active']").prop('checked', true);
但是它也不起作用。
我肯定知道条件已经满足并且正在执行(由于console.log
)。
如果需要更多信息,请索取,我将尝试提供。谢谢!
答案 0 :(得分:0)
问题是因为jQuery对象没有checked
属性。那属于本机Element对象。对于jQuery,您应该改用prop()
。
如果这对您不起作用,则您可能是AJAX逻辑出错(应检查控制台以进行诊断),或者您有多个具有name="active"
属性的元素,在这种情况下,您应该使用其他选择器。
还请注意,您无需手动调用JSON.parse()
。 jQuery会自动为您反序列化响应,因此data
已经是一个对象。再次反序列化将导致错误。试试这个:
$.ajax({
url: 'includes/exproty.php',
type: 'post',
data: { product_id: '100' }, // consider changing this value to an int
dataType: 'json', // explicitly set return data type
success: function(data) {
$("[name='active']").prop('checked', product_details.is_published);
}
});
答案 1 :(得分:0)
请尝试使用jQuery attr
if (product_details.is_published) {
console.log("Works");
$("[name='active']").attr({'checked':'checked'});
} else {
$("[name='active']").attr({'checked':''});
}
答案 2 :(得分:0)
您可能正在使用jquery 1.6或更高版本。
尝试这个..
使用复选框ID:
$(window).find("#checkboxid").prop("checked", true);
或使用复选框类(这将应用于所有使用过的类的标签)
$(window).find(".classname").prop("checked", true);
答案 3 :(得分:0)
尝试以下方法,通过测试-应该可以:
$("input[name='active']").attr( "checked", true);
$("input[name='active']").attr( "checked", false);
答案 4 :(得分:0)
使用is_published
。它是jQuery特有的,在data: {'product_id': '100',}
中包含$.ajax({
url: 'includes/exproty.php',
type: 'post',
data: {
'product_id': '100',
'product_details' : is_published
},
success: function(data) {
var product_details = JSON.parse(data);
if (product_details.is_published) {
console.log("Works");
$("[name='active']").prop('checked', true);
} else {
$("[name='active']").prop('checked', false);
}
}
});
。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="input_container">
<label>Active</label>
<input type="checkbox" name="active" />
</div>
event