javascript - 根据我在同一行中选择的选项禁用输入,所有行都相同

标签 javascript jquery html html-table

我有一个表,其行是从原始行复制而来的,因此所有 ID 都相同。如何禁用与我在同一行中选择的选项相关的输入。

例如,如果在第二行中我选择选项 10,它会禁用同一行中的第二个输入。

<table>
    <tbody>
        <tr>

            <td><select id="my_option">                     
                <option>10</option>
                <option>20</option>                    
            </select></td>
            <td id="1"><input type="text"></td>
            <td id="2"><input type="text"></td> 
        </tr>
        <tr>
            <td><select id="my_option">                     
                <option>10</option>
                <option>20</option>                    
            </select></td>
            <td id="1"><input type="text"></td>
            <td id="2"><input type="text"></td> 
        </tr>
        <tr>
            <td><select id="my_option">                     
                <option>10</option>
                <option>20</option>                    
            </select></td>
            <td id="1"><input type="text"></td>
            <td id="2"><input type="text"></td>  
        </tr>
    </tbody>
</table>

<script>
$(document).ready(function() 
{
    function change_attribute(version_val) 
    {
    var version_val = $("#my_option").val();

    var table = $(table);     
    //this part is just a test to select a specific cell   
    var cell = table.rows[1].cells[1];

    if (version_val == "10") {  

        $(cell).attr("disabled", true);

    } else if (version_val == "20") {            

        $(cell).attr("disabled", false);
    }
}
</script>

最佳答案

您需要在 td 中插入 select,并且您需要通过通用类更改重复的 id,而不是一个有效的 HTML 结构:

$(document).ready(function() {
  $('.my_option').on('change', change_attribute);
});

function change_attribute() {
  var version_val = $(this).val();
  var parent_row = $(this).closest('tr');


  if (version_val == 10) {
    parent_row.find('.1').find('input').attr("disabled", "disabled");
    parent_row.find('.2').find('input').removeAttr("disabled");

  } else if (version_val == 20) {
    parent_row.find('.2').find('input').attr("disabled", "disabled");
    parent_row.find('.1').find('input').removeAttr("disabled");
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>
        <select class="my_option">
          <option>10</option>
          <option>20</option>
        </select>
      </td>
      <td class="1"><input type="text"></td>
      <td class="2"><input type="text"></td>
    </tr>
    <tr>
      <td>
        <select class="my_option">
          <option>10</option>
          <option>20</option>
        </select>
      </td>
      <td class="1"><input type="text"></td>
      <td class="2"><input type="text"></td>
    </tr>
    <tr>
      <td>
        <select class="my_option">
          <option>10</option>
          <option>20</option>
        </select>
      </td>
      <td class="1"><input type="text"></td>
      <td class="2"><input type="text"></td>
    </tr>
  </tbody>
</table>

关于javascript - 根据我在同一行中选择的选项禁用输入,所有行都相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51310688/

相关文章:

javascript - 使用 innerHTML 创建表头

jQuery - 选择一个下拉值将从另一个下拉列表中删除一个值

javascript - jQuery 仅适用于某些 id 标签

javascript - 如何在自动完成文本区域的 Jquery 函数中将变量分配为 Id

jquery - 有没有办法使用 JQuery 从 css 类获取类定义或值?

javascript - jquery/javascript 将日期字符串转换为日期

javascript - 对于 Angular2 项目,在 gulp 中,我如何连接从 typescript 生成的所有 JavaScript 文件并将它们添加到我的 index.html 文件中

php - 我怎样才能 POST 一个 png 骰子的值?

HTML 和 CSS 背景定位一个图标

javascript - 解密AES十六进制消息完成与服务器的相互认证