【问题标题】:jQuery remove radio button/input choice if user changes dropdown selection如果用户更改下拉选择,jQuery 删除单选按钮/输入选项
【发布时间】:2016-07-12 15:12:31
【问题描述】:

Here is my page。当用户从购买下拉菜单中选择一个选项时,将出现一些单选按钮或膳食选项下拉菜单。我遇到了一个问题,如果用户选中一个单选按钮,但决定更改他的购买选项(通过转到购买下拉菜单并更改它),然后从膳食选项下拉菜单中选择并将产品添加到购物车,单选按钮选项仍会被选中并显示在购物车页面上。

我想要完成的是,如果他们的用户在购买选择之间切换,那么他们的单选按钮/输入选择每次都会被重置。

这是我当前的代码:

jQuery(function($) {
    //show meal options depending on user choice
        $('form').on('change', '#purchase', function(){
            // Reset required fields and hide fields
            $('select, input').prop('required', false);
            $('#table-meals, .product-addon-please-choose-your-meal').hide();

      if($(this).val()=="Individual") {
        $('.product-addon-please-choose-your-meal').show();
        $("#table-meals").not(".product-addon-please-choose-your-meal").hide();
        $('input').prop('required',true);
        $('#table-meals select').val("Select an Option...");
      }

      if($(this).val()=="Table of 10") {
        $(".product-addon-please-choose-your-meal").not("#table-meals").hide();
        $('#table-meals').show();
        $('select').prop('required',true);
      }
  });
});

第一个if 语句就实现了这一点,尽管它并不完美;如果他们的用户选择了用餐选项,然后选择了不同的购买选项并再次返回,则用餐选项输入字段将为空白,而不是阅读选择选项

知道如何在选择不同的购买选项时重置膳食选项输入字段(我计划有几个)吗?

【问题讨论】:

  • 您的 $("#table-meals").not(".product-addon-please-choose-your-meal") 说“选择单元素餐桌餐,但如果有课程则不选择...这是您的愿望吗?
  • @MarkSchultheiss 对不起,我不明白你的问题。该行使用.hide() 函数来隐藏另一个选项。每次更改购买下拉选项时,我都会尝试重置/取消选中/默认选择。
  • 标识为“table-meals”的元素是否具有“product-addon-please-choose-your-meal”类?如果没有,请隐藏它。这是另一种表达你所拥有的东西的方式,这种方式看起来很奇怪,特别是因为它只是在条件之前隐藏......我想我必须看看你的布局,看看它是否真的有意义。
  • 没关系,这是一个无用的问题和代码,因为您的页面在呈现时没有 ID 为 table-meals 的元素
  • @MarkSchultheiss #table-meals.product-addon-please-choose-your-meal 是两个不同的 div;每一个都对应一个购买选择;如果用户选择individual#table-meals div 保持隐藏,而.product-addon-please-choose-your-meal 出现; if Table of 10 如果选择,则反之亦然。

标签: javascript jquery html function


【解决方案1】:

您的页面并非没有大量其他挑战,这些挑战可能会产生负面影响,但要克服这些挑战以专门解决您的问题。

您在链接页面上的无线电输入是这样的:

<div class=" product-addon product-addon-please-choose-your-meal">
    <h3 class="addon-name">Please choose your meal:</h3>
    <p class="form-row form-row-wide addon-wrap-2628-please-choose-your-meal-1-0">
      <label>
        <input type="radio" class="addon addon-radio" name="addon-2628-please-choose-your-meal-1[]" data-raw-price="" data-price="" value="1" /> 1 </label>
    </p>
    <p class="form-row form-row-wide addon-wrap-2628-please-choose-your-meal-1-1">
      <label>
        <input type="radio" class="addon addon-radio" name="addon-2628-please-choose-your-meal-1[]" data-raw-price="" data-price="" value="2" /> 2 </label>
    </p>
    <p class="form-row form-row-wide addon-wrap-2628-please-choose-your-meal-1-2">
      <label>
        <input type="radio" class="addon addon-radio" name="addon-2628-please-choose-your-meal-1[]" data-raw-price="" data-price="" value="3" /> 3 </label>
    </p>
    <div class="clear"></div>
</div>

这些有一组字符需要特别注意在名称周围使用引号:特别是方括号。

您可以使用它来指定名称:

$('input[type=radio][name="addon-2628-please-choose-your-meal-1[]"]').prop('checked', false);

作为替代方案,您可以通过其中的类指定:

$('input[type=radio].addon.addon-radio').prop('checked', false);

【讨论】:

  • 太棒了!谢谢,这似乎奏效了。另一个问题:有没有更好的方法,甚至是正确的方法,将#table-meals select(第一个if 语句)框返回到默认选项(Select an Option...)?目前,$('#table-meals select').val("Select an Option..."); 有效,但如果您在购买选项之间切换,则选择框会显示为空白,而不是默认选项。
  • @vytfla - 使用 Chrome 我查看您的页面,右键单击页面,选择查看页面源(CTRL-U 相同);获取新的源页面,单击 CTRL-F(查找)输入“table-meals”,我看到没有匹配,所以我不知道你的页面在这里,因为那不在那个页面上......正如我之前指出的那样,我看到很多在我的审查中,您的页面上的复杂性无法通过代码检查。
【解决方案2】:

我看到了两个选项,第一个也是一个非常简单的方法,不需要额外的插件是设置单选按钮的属性。

$('input[name="radioButton"]').prop('checked', false);

第二个选项是使用从 jQuery 中选择的插件创建表单: https://plugins.jquery.com/chosen/

这个插件很简单,可以更好地处理表单中的输入、选择和其他类型。

让我知道它是否适合你 最好的祝福 一月

【讨论】:

  • 实际上它似乎有时会起作用,这真的令人沮丧和困惑。我也试过$('input[type="radio"]').prop('checked', false);,有时也可以。
猜你喜欢
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-07
  • 1970-01-01
  • 2011-02-10
  • 2016-09-16
相关资源
最近更新 更多