检查输入广播时显示/隐藏

时间:2019-09-04 15:22:24

标签: input show-hide prestashop-1.7

如果选中了输入,我需要仅显示

div。 所以我这样做了:

$(document).ready(function () {
$('#group_1 input').each(function () {
  if ($(this).val() == ('23') && $(this).is(':checked')) {
          $('#showtext').show();

  } else {
      $('#showtext').hide();
  }
 });
 });

被呼叫的组在这里(PrestaShop 1.7.5.1):

 {elseif $group.group_type == 'radio'}
<ul id="group_{$id_attribute_group}">
  {foreach from=$group.attributes key=id_attribute item=group_attribute}
    <li class="input-container float-xs-left">
      <label class="accordion--form__label">
        <input class="input-radio" type="radio" data-product-attribute="{$id_attribute_group}" name="group[{$id_attribute_group}]" value="{$id_attribute}"{if $group_attribute.selected} checked="checked"{/if}>
        <span class="radio-label">{$group_attribute.name}</span>
      </label>
    </li>
  {/foreach}
</ul>
 {/if}

但是,我需要如果#group_1值24被选中或者什么都没有被选中>隐藏#showtext。 我不能有这个。怎么了?

我要隐藏/显示的值23的源代码是:

<input class="input-radio" type="radio" data-product-attribute="1" name="group[1]" value="23" checked="checked">

启用此功能后,必须隐藏div:

<input class="input-radio" type="radio" data-product-attribute="1" name="group[1]" value="24">

2 个答案:

答案 0 :(得分:0)

您的单选按钮没有名为“ group_1”的ID,但其名称为“ group [1]”。在这种情况下,您可以使用jquery这样的名称进行访问。

         <div class="container">

                23 <input class="input-radio" type="radio" data-product-attribute="1" name="group[1]" value="23" checked > 

                24 <input class="input-radio" type="radio" data-product-attribute="1" name="group[1]" value="24">

                <div id="showtext">This is what is to be shown or hidden</div>
            </div>

        <script>
            $(document).ready(function () {   
                var radioValue = $("input[name='group[1]']:checked").val();
                //alert(radioValue);
                if(radioValue == '23') {
                    $('#showtext').show();
                }
                else {
                    $('#showtext').hide();
                }


                $("input[type='radio'][name='group[1]']").click(function() {
                    radioValue = $("input[name='group[1]']:checked").val();
                    //alert(radioValue);
                    if(radioValue == '23') {
                        $('#showtext').show();
                    }
                    else {
                        $('#showtext').hide();
                    }                        
                });

            });
        </script>  

希望这会有所帮助。

答案 1 :(得分:0)

好吧,现在的问题是:如果我检查输入24,然后单击输入23(现在可以看到div)以再次选择输入24,则div不会隐藏。 如果我单独使用该代码,效果很好,但是在PrestaShop product.tpl中,我遇到了这个问题。 “ showtext”保持可见。 您对可能的错误有任何想法吗?也许是表格购物车?

输入位于表单内部,div位于外部(因为在product-customization.tpl内部有另一个表单):

 <form action="{$urls.pages.cart}" method="post" id="add-to-cart-or-refresh">
              <input type="hidden" name="token" value="{$static_token}">
              <input type="hidden" name="id_product" value="{$product.id}" id="product_page_product_id">
              <input type="hidden" name="id_customization" value="{$product.id_customization}" id="product_customization_id">