如何添加"禁用"属性到文本字段基于表中的下拉选择?

时间:2016-05-27 11:36:45

标签: javascript jquery html

如果选择了该行中的特定下拉列表,我只需要在每一行中都有一个字段。因此,如果选择值1,则禁用它。

以下是我所拥有的:

Jquery的:

<script>
    $(document).ready(function () {
        $('.Selecter').change(function () {
            var $this = $(this); 
            var $row = $this.closest("tr").find('.accountNumber');
            if (this.value == "1") {
                $('#row').attr("disabled", "disabled");
            } else {
                return false;
            }
        });
    });

</script>

HTML:

<table>
<tr>
<td>
<select id="Select1" class="Selecter">
<option value="">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>

</select>
</td>
<td>
<input type="text" class="accountNumber"/>
</td>
</tr>

<tr>
<td>
<select id="select2" class="Selecter">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>

</select>
</td>
<td>
<input type="text" class="accountNumber" />
</td>
</tr>
</table>

小提琴:https://jsfiddle.net/8efeyhc5/2/

3 个答案:

答案 0 :(得分:2)

试试这个:

Jsfiddle:https://jsfiddle.net/vLx658of/

 $(document).ready(function () {
        $('.Selecter').change(function () {
            var $this = $(this); 
            console.log($this.val())
            var $row = $this.closest("tr").find('.accountNumber');
            if ($this.val() == "1") { // use $this.val()
                $row.attr("disabled", "disabled"); // use $row here because you want to disable selected row field
            } else {
                return false;
            }
        });
    });

答案 1 :(得分:1)

  • 在应用$row方法时使用.attr,因为$('#row')
  • 中没有DOM元素
  • 使用.prop代替.attr
  • 如果条件可以通过$row.prop("disabled", this.value == "1");
  • 消除
  • 最初使用.change()来调用处理程序。
$('.Selecter').change(function() {
  $(this).closest("tr").find('.accountNumber').prop("disabled", this.value == "1");
}).change();

&#13;
&#13;
$('.Selecter').change(function() {
  $(this).closest("tr").find('.accountNumber').prop("disabled", this.value == "1");
}).change();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<table>
  <tr>
    <td>
      <select id="Select1" class="Selecter">
        <option value="">0</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>

      </select>
    </td>
    <td>
      <input type="text" class="accountNumber" />
    </td>
  </tr>

  <tr>
    <td>
      <select id="select2" class="Selecter">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>

      </select>
    </td>
    <td>
      <input type="text" class="accountNumber" />
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

Fiddle Demo

答案 2 :(得分:1)

你可以,

$('.Selecter').change(function() {
  var val = $(this).val();
  if (val == 1) {
    $(this).closest("tr").find(".accountNumber").prop("disabled", true);

  } else {
    $(this).closest("tr").find("accountNumber").prop("disabled", false);
  }
});

Fiddle

您的代码存在问题,您将当前行的帐号转换为名为$row的变量,但在下一行中您只使用了选择器&#39;#row&#39;与前一行没有任何关系。