【问题标题】:How to enable/disable text box based on radio buttons using JQuery如何使用 JQuery 基于单选按钮启用/禁用文本框
【发布时间】:2018-03-27 03:07:57
【问题描述】:

我有 2 个单选按钮和 2 个文本框。我想启用/禁用基于单选按钮的文本框。首次加载页面时,应禁用 txtB。并且只有在选中其各自的单选按钮B 时才会启用它。你能指导我怎么做吗?

jQuery

 $("document").ready(function () {
           $('#M').on('change', '.ABC input[type = "radio"]', function () {
                    var divA = $('.P').find('#A'); 

                    var lblA = $('.panel-heading').find('#lblA'); 

                    var id = $(this).val();              
                    if (id == "A")
                    {

                        $(lblB).hide();
                        $(lblA).show();
                    }


                   $('#' + id).show();

               });
        });

       $("document").ready(function () {
           $('#M').on('change', '.CDE input[type = "radio"]', function () {                           
                    var lblA = $('.panel-heading').find('#lblA'); 
                    var lblB = $('.panel-heading').find('#lblB'); 

                    var id = $(this).val();              
                    if (id == "B")
                    {
                        $(divA).hide();

                        $(lblB).show();
                    }

               });
        });

单选按钮

<div class="ABC">
                <label>
                    @Html.RadioButtonFor(m => m.Name, "A", new { 
                       @checked = "checked" })<span>A</span>
                </label>
           </div>
       <div class="CDE">
           @Html.RadioButtonFor(m => m.Name, "B")<span>B</span>
       </div>

文本框

    <div class="P">
        <div id="A" class="container">
            @Html.TextBoxFor(m => m.txtA)
         </div>

    </div>     

    <div id="B">
      @Html.TextBoxFor(m => m.txtB)                         
     </div> 

【问题讨论】:

  • 什么是带标记的语言
  • @Dipakchavda,这是带有 MVC 框架的 html5
  • 禁用或隐藏? (您的代码试图显示/隐藏它,而不是禁用/启用它)
  • @StephenMuecke,禁用/启用
  • 使用var selectedValue = $('input[name=name_of_your_radiobutton]:checked').val(); 获取所选按钮的值,然后您只需要一个if 块并使用$('#txtA').prop('disabled', true);

标签: jquery asp.net-mvc


【解决方案1】:

使用disabled 属性禁用txtB

<div class="ABC">
     <label>
         @Html.RadioButtonFor(m => m.Name, "A", new
         {
             @checked = "checked"
         })<span>A</span>
     </label>
</div>
<div class="CDE">
        @Html.RadioButtonFor(m => m.Name, "B")<span>B</span>
</div>

<div class="P">
    <div id="A" class="container">
        @Html.TextBoxFor(m => m.txtA)
     </div>
</div>
<div id="B">
        @Html.TextBoxFor(m => m.txtB, new
        {
               // Make this textbox disabled as you need this textbox to be disabled on page load
               @disabled = "disabled" 
        })
</div> 

使用下面的jquery,

// Fire on radio button checked event    
$('input[type="radio"]').change(function () {

    // Get the value of currently clicked radio button
    var value = $(this).val();

    // Find the corresponding textbox inside the div that has the id same as radio button value and remove it disabled attribute
    $('#' + $(this).val())
    .children('input[type="text"]')
    .removeAttr('disabled');

    // Find all radio button and find its corresponding textbox and make it disable except the checked radio button.
    $('input[type="radio"]').each(function () {
        if(this.value != value)
        {
            $('#' + this.value)
            .children('input[type="text"]')
            .attr('disabled', 'disabled');
        }
    })
});

【讨论】:

  • 解决方案在给定的场景中运行良好。非常感谢。
  • 如果它对你有用,请接受它作为你的答案@Raj
  • 但是如果有 3 个单选按钮和 4 个 texboxes,请您指导我。
  • 您可以使用相同的代码,但您必须遵循您所做的命名约定。这意味着您必须确保单选按钮的值必须与您拥有与该单选按钮对应的文本框的 div 的 id 相同。
  • 如果同一个 &lt;div&gt; 内还有 1 个单选按钮,看起来像 &lt;div class="ABC"&gt; &lt;label&gt; @Html.RadioButtonFor(m =&gt; m.Name, "A", new { @checked = "checked" })&lt;span&gt;A&lt;/span&gt; &lt;/label&gt; &lt;label&gt; @Html.RadioButtonFor(m =&gt; m.Name, "C")&lt;span&gt;C&lt;/span&gt; &lt;/label&gt; &lt;/div&gt;
【解决方案2】:

给你一个解决方案

$('input[type="radio"]').change(function(){
  $('#' + $(this).val())
    .removeAttr('disabled')
    .siblings('input[type="text"]')
    .attr('disabled', 'disabled');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" value="text1" checked name="textbox">Textbox 1
<input type="radio" value="text2" name="textbox">Textbox 2

<br/>

<input type="text" id="text1" />
<input type="text" id="text2" disabled/>

希望这会对你有所帮助。

详情: 哪个单选按钮将被点击相应的文本框将被启用。

假设: 你的文本框是兄弟姐妹

在你的场景中,

$('input[type="radio"]').on('change', function() {
  $('#' + $(this).find('span').text())
    .find('input[type="text"]')
    .removeAttr('disabled')
    .closest('div')
    .siblings('div')
    .find('input[type="text"]')
    .attr('disabled', 'disabled')
});

【讨论】:

  • 请帮我解决我的情况。请不要单独创建一个。如果您用我的场景回答我的问题,那就太好了。谢谢
  • @Raj 我已经更新了答案,看看,请告诉我。
猜你喜欢
  • 2010-12-04
  • 1970-01-01
  • 2017-12-28
  • 2013-04-27
  • 1970-01-01
  • 2015-08-02
  • 2011-09-15
  • 2012-10-25
  • 2021-04-07
相关资源
最近更新 更多