【问题标题】:How to disable a link button on radio button click in asp.net c# using jquery/javascript如何使用 jquery/javascript 在 asp.net c# 中禁用单选按钮单击上的链接按钮
【发布时间】:2020-05-09 09:02:49
【问题描述】:

  function disableButtons(val) {
            if (val == 'clear') {
                $('#btnExcellent, #btnFine, #btnBad').prop('disabled', true);
                
                $('#btnSkip').prop('disabled', false);
            } else {
                $('#btnExcellent, #btnFine, #btnBad').removeProp('disabled');
                $('#btnSkip').prop('disabled',true);
            }
        }
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
<table id="radioBtnQueryQuality">
  <tr>
    <td><input id="radioBtnQueryQuality_0" type="radio" name="radioBtnQueryQuality" value="clear" onclick="disableButtons(&#39;clear&#39;);" /><label for="radioBtnQueryQuality_0">One</label></td>
  </tr>
  <tr>
    <td><input id="radioBtnQueryQuality_1" type="radio" name="radioBtnQueryQuality" value="notExpNorImp" onclick="disableButtons(&#39;notExpNorImp&#39;);" /><label for="radioBtnQueryQuality_1">Two</label></td>
  </tr>
  <tr>
    <td><input id="radioBtnQueryQuality_2" type="radio" name="radioBtnQueryQuality" value="invalid" onclick="disableButtons(&#39;invalid&#39;);" /><label for="radioBtnQueryQuality_2">Three</label></td>
  </tr>
</table>

<a id="btnExcellent" class="btn btn-primary" href="javascript:__doPostBack(&#39;btnExcellent&#39;,&#39;&#39;)">Excellent</a>
<a id="btnFine" class="btn btn-primary" href="javascript:__doPostBack(&#39;btnFine&#39;,&#39;&#39;)">Fine</a>
<a id="btnBad" class="btn btn-primary" href="javascript:__doPostBack(&#39;btnBad&#39;,&#39;&#39;)">Bad</a>
<a id="btnSkip" class="btn btn-primary" href="javascript:__doPostBack(&#39;btnSkip&#39;,&#39;&#39;)">Skip</a>

要求:

我想在单击第一个单选按钮时禁用 btnFour 按钮(即值为 one)。 如果我单击剩余的两个单选按钮,我希望除最后一个之外的前三个按钮被禁用。

它没有按我想要的方式工作。如果我采用简单的 HTML 按钮,那么它可以工作,但在 LinkBut​​tons 的情况下它不起作用。任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: javascript c# jquery asp.net radiobuttonlist


    【解决方案1】:

    您可以尝试下面的代码,只需在调用禁用函数时传递单选按钮的值并启用或禁用相关按钮

    代码片段

    function disableButtons(val) {
       if (val == 'clear') {
         $('#btnExcellent, #btnFine, #btnBad').addClass('disabled');
         $('#btnSkip').removeClass('disabled');
       } else {
         $('#btnExcellent, #btnFine, #btnBad').removeClass('disabled');
         $('#btnSkip').addClass('disabled');
       }
       
       $('a.disabled').each(function(){
          var href = $(this).attr('href');
          //console.log('attr = ' + href);
          $(this).data('href', href);
          $(this).attr('href', '#')
       });
       $('a:not(.disabled)').each(function(){
          var href = $(this).data('href');
          //console.log('data = ' + href);
          if(href) {
             $(this).attr('href', href);
          }
       });
    }
    a.disabled {
      opacity: 0.1;
    }
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
    <table id="radioBtnQueryQuality">
      <tr>
        <td><input id="radioBtnQueryQuality_0" type="radio" name="radioBtnQueryQuality" value="clear" onclick="disableButtons(&#39;clear&#39;);" /><label for="radioBtnQueryQuality_0">One</label></td>
      </tr>
      <tr>
        <td><input id="radioBtnQueryQuality_1" type="radio" name="radioBtnQueryQuality" value="notExpNorImp" onclick="disableButtons(&#39;notExpNorImp&#39;);" /><label for="radioBtnQueryQuality_1">Two</label></td>
      </tr>
      <tr>
        <td><input id="radioBtnQueryQuality_2" type="radio" name="radioBtnQueryQuality" value="invalid" onclick="disableButtons(&#39;invalid&#39;);" /><label for="radioBtnQueryQuality_2">Three</label></td>
      </tr>
    </table>
    
    <a id="btnExcellent" class="btn btn-primary" href="javascript:__doPostBack(&#39;btnExcellent&#39;,&#39;&#39;)">Excellent</a>
    <a id="btnFine" class="btn btn-primary" href="javascript:__doPostBack(&#39;btnFine&#39;,&#39;&#39;)">Fine</a>
    <a id="btnBad" class="btn btn-primary" href="javascript:__doPostBack(&#39;btnBad&#39;,&#39;&#39;)">Bad</a>
    <a id="btnSkip" class="btn btn-primary" href="javascript:__doPostBack(&#39;btnSkip&#39;,&#39;&#39;)">Skip</a>

    【讨论】:

    • 浏览器是否有控制台错误?你能在代码 sn-p 上重现这个吗
    • 兄弟也没有控制台错误。让我在编码的 sn-p 上重现这个
    • 您可以通过检查元素从您的网页复制粘贴 HTML 元素,在那里您可以获得从 ASP 代码转换的实际 HTML
    • 请检查sn-p。 ID 已更改,因为我已经复制粘贴了代码。
    • 使用attr 而不是prop 并且禁用不是禁用,请通过回答检查一次
    猜你喜欢
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2016-08-29
    相关资源
    最近更新 更多