首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当未选中复选框时,如何禁用anPHP、禁用和清除文本框。根据数据库选中/取消复选框

问当未选中复选框时,如何禁用anPHP、禁用和清除文本框。根据数据库选中/取消复选框
EN

Stack Overflow用户
提问于 2017-10-02 07:45:22
回答 4查看 304关注 0票数 0

如果复选框被取消,我希望禁用和清除文本框,并在选中时启用它。同时,复选框应取决于数据库上的值。

  • 如果是deductstatus == 1,则在加载时应选中复选框
  • 如果是deductstatus == 2,则在加载时应取消选中复选框。

下面的代码不工作。有什么帮助吗?

​

代码语言:javascript
复制
$(".dedstat").click(function() {
  if ($(".dedstat").is(":checked")) {
    $(".deductto").removeAttr("disabled")
  } else {
    $(".deductto").attr("disabled", "disabled")
    var deductto = document.getElementById("deductto");
    deductto.value = "";
  }
});
代码语言:javascript
复制
<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;?>">

​

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-10-02 07:54:37

当操作布尔属性(如checked、disabled、multiple )时,您应该使用.prop()而不是.attr()或.removeAttr()。其他一些建议改进如下:

  • 使用this.checked而不是$(".dedstat").is(":checked"),因此它是特定于上下文的
  • 使用ID选择器而不是类
  • 您可以链接您的jQuery方法,这样既可以禁用输入,又可以同时清空它的值。
  • 侦听change事件,而不是click的<input>元素

​

代码语言:javascript
复制
$("#dedstat").change(function() {
  if (this.checked) {
    $("#deductto").prop("disabled", false)
  } else {
    $("#deductto")
      .prop("disabled", true)
      .val('');
  }
});
代码语言:javascript
复制
<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节点作为参数,以便它在上下文上知道您所引用的哪个复选框元素:

​

代码语言:javascript
复制
// 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]);
代码语言:javascript
复制
<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支柱写入您的输入元素,即:

代码语言:javascript
复制
<input type="checkbox" name="dedstat" id="dedstat" <?php echo $dedstat == 1 ? 'checked' : ''; ?>>
票数 0
EN

Stack Overflow用户

发布于 2017-10-02 07:50:38

选中不是一个值,它是一个属性,它应该是:

代码语言:javascript
复制
<input type="checkbox" name="dedstat" id="dedstat" value="" <?php if ($dedstat == 1) echo 'checked'; ?>>
票数 1
EN

Stack Overflow用户

发布于 2017-10-02 07:51:16

value属性不能用于根据数据库值保持checked或unchecked。并分别绑定选中属性或未选中属性。所以像这样改变那个标签:

代码语言:javascript
复制
<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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46521378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档