【问题标题】:Uncheck other radio buttons when checking one, having problems检查一个时取消选中其他单选按钮,有问题
【发布时间】:2018-03-07 00:18:02
【问题描述】:

通过单击 div 选择单选按钮时,我的 UI 出现问题:

我有一个显示各种单选按钮的循环:

{% for product in collections.regalos.products %}
<li class="grid__item large--one-third gift-card">
  <div class="gift-select-option-inside">
    <input required type="radio" class="gift-input" 
    name="properties[Regalo]" value="{{ product.title }}"> <label>{{ 
    product.title }}</label>
  </div>
</li>
{% endfor %}

我想在通过切换检查无线电时应用一个类,但它会在每个无线电输入上重复(单击新输入时其他输入不会禁用它们的类)

<script>
  $(".gift-card").on("click", function() {
      var giftradio = $(this).find('input[type=radio]').prop('checked', true);
      giftradio.parent('div').toggleClass('selectedgift');
      $('#builder-t-1').append("<span class='ok'>OK</span>");
  });

   if($('.gift-input').is(':checked')) { alert("it's checked"); }
</script>

基本上,我不想要这个: 每次我点击收音机时,一切都会重复。我只需要选择 1 个 div 并在选项卡上显示一个警报。

【问题讨论】:

    标签: javascript jquery html shopify


    【解决方案1】:

    一种方法是取消选中所有单选按钮,然后选择正确的。

    <script>
      $(".gift-card").on("click", function() {
        // deselect all 
        $('.gift-input').prop('checked', false).parent('div').removeClass('selectedgift'); 
    
        var giftradio = $(this).find('input[type=radio]').prop('checked', true);
        giftradio.parent('div').toggleClass('selectedgift');
    
        $('#builder-t-1').html("<span class='ok'>OK</span>");
      });
    
      if($('.gift-input').is(':checked')) { alert("it's checked"); }
    </script>
    

    【讨论】:

    • 还是一样:(
    • 你能确保每次事件都是由console.log('Event is triggered');触发的吗?
    • 它每次都会触发,但是当点击一个收音机时,其他收音机应该删除他们的类并且它没有发生......
    • 现在可以编辑了!好的!附加部分怎么样?有什么我可以做的,以便在选择任何收音机时只显示警报“OK”?
    • 没关系,只是更改了 .HTML 的 append 并且它起作用了。非常感谢!
    【解决方案2】:

    我认为编写一个 Jquery 脚本来取消选中是一种矫枉过正,请尝试以下方法;

    {% for product in collections.regalos.products %}
    <li class="grid__item large--one-third gift-card">
      <div class="gift-select-option-inside">
        <input required type="radio" class="gift-input" 
        name="gift-select-checkbox" value="{{ product.title }}"> <label>{{ 
        product.title }}</label>
      </div>
    </li>
    {% endfor %}
    
    <script>
      $(".gift-card").on("click", function() {
          var giftRadioVal=$('.gift-card :checked').val();
          //Do anything with this val
      });
    </script>
    

    【讨论】:

    • 它不断将类添加到每个输入而不消除其他输入:/
    • 如果您尝试捕获选中的收音机的值,那应该不是问题。看看:jsfiddle.net/g1foycr2/5
    猜你喜欢
    • 2015-02-27
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2020-04-05
    • 2014-01-06
    相关资源
    最近更新 更多