0

大家好,我在这里得到了我的代码,我认为它是正确的,应该可以正常工作,但它没有。我有一个单选按钮组和一个复选框。每个单选按钮都有一个值,将用作金额和复选框仅用于启用允许用户输入所需金额的文本框。我可以通过检查是否已先检查来启用文本框。我想禁用无线电组,而复选框已启用。这是我的页面实际外观的屏幕截图

在此处输入图像描述

这是我的html

     <label class="radio-inline" style="margin-left:15%;" >
                            <input type="radio" id="amount_suggest_1" name="montantdon" value="50 000" onFocus="this.blur()"  >
                         50 000</label>
    <label class="radio-inline"><input type="radio" id="amount_suggest_2" name="montantdon" value="25 000" onfocus="this.blur()" >25 000</label>
    <label class="radio-inline"><input type="radio" id="amount_suggest_3" name="montantdon" value="10000" onfocus="this.blur()" >10 000</label>
    <label class="radio-inline"><input type="radio" id="amount_suggest_4" name="montantdon" value="5000" onfocus="this.blur()" >5000</label>
    <label class="radio-inline lastradio"><input type="radio" id="amount_suggest_5" name="montantdon" value="1000" onfocus="this.blur()"  checked>1 000</label>

                        <div class="row" style="padding-left:20px;">
                            <div class="col-xs-12 col-sm-6 col-md-6 col-lg-5" style="width:200px;width:200px;margin:auto;margin-top:2%;">
                                <div class="input-group input-group-amount" >
                                <label class=""><input type="checkbox" name="autresdon" id="autresdon" />&nbsp;Autres</label>
                                    <div style="display:inline-block;vertical-align:top;"><input type="text" style="width:50px;" name="amountentered" id="amountentered" disabled /></div>
                                    <div style="display:inline-block;vertical-align:top;">
                                  <div class="input-group-btn" style="position:relative;">
                                      <button type="button" class="btn btn-default btn-lg dropdown-toggle currency-current" data-toggle="dropdown"><span class="currency" id="currency">EUR-€&lt;/span> <span class="caret"></span></button>

这是我的jQuery代码

          $('#autresdon').click(function(){//on click the checkbox
      if($('#autresdon').is(':checked'))
                {
                $('#amountentered').prop("disabled",false);//enables textbox
                }
                else
                {
                $('#amountentered').prop("disabled",true);//on unset checkbox disable textbox
                }
      });

      //disabling radio group by using their class as selector
             $('.montantdon ').click(function(){
             if($('#autresdon').is(':checked'))
             {
                $('#autresdon').prop("checked",false);
                }
      });

我不想同时发布数据(收音机的值和手动输入的金额)。我该如何解决这个问题?谢谢

4

1 回答 1

5

如果我正确理解了这个问题,我建议:

// binds the change-handler:
$('#autresdon').change(function(){
    // sets the 'disabled' property to false (if the 'this' is checked, true if not):
    $('.radio-inline').prop('disabled', !this.checked);
// triggers the change event (so the disabled property is set on page-load:
}).change();

顺便说一句,使用 JavaScript(尤其是在 jQuery 中,它变得完全没有必要)远离内联/突兀的 JavaScript。使用onFocus/ onfocusonchangeonclick会导致维护噩梦,并创建一些非常(并且再次不必要地)不整洁的 HTML。

参考:

于 2013-11-14T09:10:08.670 回答