【问题标题】:How to display hidden value in form based on selection?如何根据选择在表单中显示隐藏值?
【发布时间】:2011-04-21 01:11:11
【问题描述】:

我正在使用自定义搜索,其中有一个下拉列表:

<select name='Time_Available'>
            <option value="" selected='true'>Any</option>
            <option value='<?php echo date('Y/m/d', strtotime('+30 days')) ?>'>30 days</option>
            <option value='<?php echo date('Y/m/d', strtotime('+60 days')) ?>'>60 days</option>
            <option value='<?php echo date('Y/m/d', strtotime('+90 days')) ?>'>90 days</option>
            </select>

虽然,当提交表单时,如果选择了“任何”选项,我希望它在表单中添加这个:

<input type='hidden' name='Model' value='Yes' />

对于其余的选项(30、60、90 天),我只希望它定期提交而没有上述部分。

我试图通过将&amp;Model=Yes 添加到“Any”的值来解决这个问题,尽管 & 符号被搞砸了。我可以添加任何 javascript 或 jQuery 来解决这个问题吗?

【问题讨论】:

    标签: php html wordpress forms


    【解决方案1】:

    jQuery 可以在五秒钟内完成。有一些更复杂的方法可以将输入添加到页面中,但我强烈建议您将其放入 HTML 中,无需 JS 干预:

    <input id="Model" type="hidden" name="Model" value="Yes" disabled="disabled" />
    

    那么你就这样做吧。

    $("select").change(function () {
       if ($(this).val() == 'Any') {
          $("#Model").attr('disabled', '');
       }
       else {
          $("#Model").attr('disabled, 'disabled');
       }
    });
    

    请注意,如果默认选择“任何”,则出于显而易见的原因,您不想一开始就禁用模型。

    顺便说一句,如果您已经在检查选择的值,为什么还需要额外检查,我有点困惑。而不是您的脚本检查 Model == Yes,为什么不检查 Time_Available == Any?

    最后,您不能以您描述的方式附加到查询字符串(仅将 & 添加到这样的值是行不通的)。 & 符号将自动编码。如果用户可以以这种方式将他们喜欢的任何内容添加到查询字符串中,那将是一场 UI 噩梦。

    【讨论】:

      【解决方案2】:

      这并不难。

      将隐藏输入添加到表单并将选择修改为:

      <select name='Time_Available' onchange="this.form.Model.disabled=(this.options.selectedIndex)? true:false">
      

      如果选择的选项发生变化,并且新选择的选项不是第一个,则 get 被禁用。

      【讨论】:

      • 我仍然无法让它工作。它仍然将 &Model=Yes 添加到搜索查询中。我应该在那个例子中填写什么吗?
      猜你喜欢
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多