【问题标题】:To disable the selective check box on page load jquery禁用页面加载 jquery 上的选择性复选框
【发布时间】:2011-12-24 12:48:33
【问题描述】:

我有一个问题并搜索了一段时间,但是没有得到任何提示。

我有一个类似的页面:

 <!doctype html>
    <html>
    <body>
    <table id='mytable'>
    <tr>
    <thead>
    <th><input type="checkbox" id="action-toggle" /></th>
    <th>Institute</th>
    <th>Version</th>
    </tr>
    </thead>
    <tbody>
    <tr class="row1"><td><input type="checkbox" class="action-select" value="119" name="_selected_action" /></td>
    <td>ABCD Engineering College</td>
    <td>1.0</td></tr>
    <tr class="row1"><td><input type="checkbox" class="action-select" value="119" name="_selected_action" /></td>
    <td>EFGH Engineering College</td>
    <td>2.0</td></tr>
    <tr class="row1"><td><input type="checkbox" class="action-select" value="119" name="_selected_action" /></td>
    <td>IJKL Engineering College</td>
    <td>1.0</td></tr>
    </tbody>
    </body>
    </html>

    jQuery(document).ready(function($){
        jQuery("#result_list tbody tr").each(function(index,el){
                    val=$(el).text();
                    (if val=='1.0'){
                    $("el:contains('1.0')").closest("td").find("input.action-select").attr('disabled','disabled');
                    }
    });
    });



    jQuery(document).ready(function($){
        jQuery("#result_list tbody tr").each(function(index,el1){
                    $(el1).each(function(idex,el2){
                    val=$(el2).text();
                    (if val=='1.0'){
                    $("el:contains('1.0')").closest("td").find("input.action-select").attr('disabled','disabled');
                    }
    });
    });

现在我想在有 1.0 版的 tbody 中,其各自的复选框应该在页面加载时被禁用。 我也应用了 .each 函数和两个 .each 函数,但没有得到想要的结果。如果能回答这个问题,我会非常有帮助。在此先感谢。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:
    jQuery(document).ready(function($){
        jQuery("#mytable tr").each(function(){
           var version=$(this).find('td:last').text();
           if (version === "1.0"){
               $(this).find("input[type='checkbox']").attr('disabled','disabled');
             } 
        });     
    }); 
    

    小提琴:http://jsfiddle.net/R27wq/1/

    在您的 html 代码中也包含 &lt;/table&gt;

    【讨论】:

    • 不客气,伙计...如果它帮助您解决问题,您应该将答案标记为已接受。
    • 对不起,之前做过...我没有,我只能标记为正确答案。
    【解决方案2】:

    知道了: http://jsfiddle.net/QUVjZ/1/

    $("#mytable tr td").each(function(index, el1) {
    
        val = $(el1).html();
        if (val == '1.0') {
            $(el1).parent("tr").find("td:eq(0) input[type='checkbox']").attr("disabled", "disabled");
        }
    
    });
    

    【讨论】:

      【解决方案3】:

      试试这个:http://jsfiddle.net/nvn6J/

      $('#mytable tbody tr').each(function() {
      
          var row = $(this);
      
          if($(this).find('td:last').text() == '1.0') {
             $(row).find('input[name="_selected_action"]').prop('disabled', 'disabled');
          }
      
      });
      

      这可行,但我相信最好通过禁用后端的选项来解决。我不知道你的后端代码是什么样的,或者即使你使用的是 PHP,但这是我正在谈论的一个例子:

      $counter = 1;
      foreach($colleges_array as $College) {
          echo '
              <tr class="row' . $counter . '">
                  <td><input type="checkbox" class="action-select" value="' . $College->id . '" name="_selected_action" ' . ($College->version == '1.0' ? ' disabled="disabled' : '') . ' /></td>
                  <td>' . $College->name . '</td>
                  <td>' . $College->version . '</td>
              </tr>';
      
           $counter++;
      }
      

      【讨论】:

      • 感谢您的回答,我在后端使用 python/django,我需要在其内置于 django 的管理部分中实现这个。我想我不能从后端更改它.. .
      【解决方案4】:

      一个好的实现是使用 HTML 中可用的自定义数据属性。

      为输入框设置数据属性

          <input type="checkbox" class="action-select" value="119" 
      name="_selected_action" data-version='1.0' />
      

      注意data-version='1.0'复选框中添加了一个新属性

      您的表格将如下所示:

          <html>
      <body>
      <table id='mytable'>
          <tr>
              <thead>
              <th><input type="checkbox" id="action-toggle"/></th>
              <th>Institute</th>
              <th>Version</th>
          </tr>
          </thead>
          <tbody>
          <tr class="row1">
              <td><input type="checkbox" class="action-select" value="119" name="_selected_action" data-version="1.0"/></td>
              <td>ABCD Engineering College</td>
              <td>1.0</td>
          </tr>
          <tr class="row1">
              <td><input type="checkbox" class="action-select" value="119" name="_selected_action" data-version="2.0"/></td>
              <td>EFGH Engineering College</td>
              <td>2.0</td>
          </tr>
          <tr class="row1">
              <td><input type="checkbox" class="action-select" value="119" name="_selected_action" data-version="1.0"/></td>
              <td>IJKL Engineering College</td>
              <td>1.0</td>
          </tr>
          </tbody>
      </body>
      </html>
      

      并在 document.ready 上使用以下 jquery 实现。

      $(document).ready(function(){
          $('input:checkbox[data-version="1.0"]').attr('disabled','disabled');
      });
      

      这比遍历对象更简洁

      例如,您可以参考此处使用自定义数据属性

      http://api.jquery.com/data/

      以下网址提供了一个相同的示例:

      http://jsfiddle.net/LUFJw/1/

      如果你想让这个功能更通用,你也可以试试这个。

      $(document).ready(function() {
          function disableVersion(version) {
              $('input:checkbox[data-version="' + version + '"]').attr('disabled', 'disabled');
          }
          disableVersion('1.0');
      });
      

      这里有一个相同的例子:http://jsfiddle.net/LUFJw/2/

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 2012-11-22
        • 1970-01-01
        • 2016-10-19
        • 2020-10-21
        • 2013-11-17
        • 2020-06-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多