如果复选框被取消,我希望禁用和清除文本框,并在选中时启用它。同时,复选框应取决于数据库上的值。
deductstatus == 1,则在加载时应选中复选框deductstatus == 2,则在加载时应取消选中复选框。下面的代码不工作。有什么帮助吗?
$(".dedstat").click(function() {
if ($(".dedstat").is(":checked")) {
$(".deductto").removeAttr("disabled")
} else {
$(".deductto").attr("disabled", "disabled")
var deductto = document.getElementById("deductto");
deductto.value = "";
}
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="dedstat" id="dedstat" value="<?php if ($dedstat == 1) echo 'checked'; ?>">
<input type="text" name="deductto" id="deductto" value="<?php echo $deductto;?>">
发布于 2017-10-02 07:54:37
当操作布尔属性(如checked、disabled、multiple )时,您应该使用.prop()而不是.attr()或.removeAttr()。其他一些建议改进如下:
this.checked而不是$(".dedstat").is(":checked"),因此它是特定于上下文的change事件,而不是click的<input>元素
$("#dedstat").change(function() {
if (this.checked) {
$("#deductto").prop("disabled", false)
} else {
$("#deductto")
.prop("disabled", true)
.val('');
}
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="dedstat" id="dedstat">
<input type="text" name="deductto" id="deductto">
如果希望在页面负载上计算输入的状态,则还必须执行相同的逻辑,而不必将其绑定到onChange事件。最好的方法是创建一个由onChange事件和DOMread.window.load事件调用的函数。在下面的示例中,我们创建的方法将接受一个DOM节点作为参数,以便它在上下文上知道您所引用的哪个复选框元素:
// Method to conditionally enable/disable input
var updateTextInput = function(el) {
if (el.checked) {
$("#deductto").prop("disabled", false)
} else {
$("#deductto")
.prop("disabled", true)
.val('');
}
}
// Call method when change event is fired from checkbox
$("#dedstat").change(function() {
updateTextInput(this);
});
// Call method on DOMready, pass DOM node (not the jQuery object)
updateTextInput($('#dedstat')[0]);<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="dedstat" id="dedstat">
<input type="text" name="deductto" id="deductto">
对于您的PHP,您只需使用张量运算符就可以有条件地将checked支柱写入您的输入元素,即:
<input type="checkbox" name="dedstat" id="dedstat" <?php echo $dedstat == 1 ? 'checked' : ''; ?>>发布于 2017-10-02 07:50:38
选中不是一个值,它是一个属性,它应该是:
<input type="checkbox" name="dedstat" id="dedstat" value="" <?php if ($dedstat == 1) echo 'checked'; ?>>发布于 2017-10-02 07:51:16
value属性不能用于根据数据库值保持checked或unchecked。并分别绑定选中属性或未选中属性。所以像这样改变那个标签:
<input type="checkbox" name="dedstat" id="dedstat" onclick="isChecked()" value="1" <?php echo (isset($dedstat) && $dedstat == 1)? "checked" : "" ; ?>关于这一点,如果您想分别存储1和2个值来保存复选框的选中和未选中条件,那么应该做的是,如果选中复选框,将在php $_POST中获得其值,但如果未选中,则不会在$_POST中获得它。因此,在这种情况下,应该将其默认值2存储到DB列中。因此,只有当下次从DB获取值时,才能得到2。
https://stackoverflow.com/questions/46521378
复制相似问题