如何为表单的 <select> 关系应用 if 语句

Posted

技术标签:

【中文标题】如何为表单的 <select> 关系应用 if 语句【英文标题】:how to apply if statement for form's <select> relation 【发布时间】:2016-05-04 10:03:29 【问题描述】:

实际上,我想做这个: 我的表单中有 2 个带有一些选项的选择字段,我想要:如果首先我选择一个选项(例如 id="2"),第二个选择字段更改自动注意第一个字段选择的选项。

<form>
<select>
   <option id="1"></option>
   <option id="2"></option>
   <option id="3"></option>
</select>
   #in here if select option with 1 id show select field with 1th id:
<select id="1th">
    #options here...
</select>

   #if select option with 2 id show select field with 2th id:
<select id="2th">
    #options here...
</select>

   #if select option with 3 id show select field with 3th id:
<select id="3th">
    #options here...
</select>
</form>

(通过更改表单选择字段来更改表单其他字段)。

如果你可以用 jquery 做到这一点。它甚至会更好。 谢谢。

【问题讨论】:

这称为连接选择。 不要使用以数字开头的id 请写出到目前为止你尝试过的内容。 【参考方案1】:

使用jQuery和第一个选择元素的值,这很容易创建。

<select id="first-select">
   <option value="1"></option>
   <option value="2"></option>
   <option value="3"></option>
</select>

注意:不要像以前那样使用 id,而是使用值。 对于每个子选择,添加一个 id 和一个类,我们将使用它们来显示和隐藏正确的选择。

<select id="select-1" class="hideIfNotSelected">
    #options here
</select>

然后使用这个 jQuery。

<script type="text/javascript">

$(document).ready(function()

    $("#first-select").on('change', function(event) 
         var selected = this.val();

         $(".hideIfNotSelected").hide(); //hide all selects
         $("#select-"+ selected).show(); //show only the selected select.
    );

);

</script>

【讨论】:

【参考方案2】:

你可以从这个开始:

$(function () 
  var sel_1 = ["", "One", "Two", "Three"];
  var sel_2 = [
    [""],
    ["", "One-One", "One-Two", "One-Three"],
    ["", "Two-One", "Two-Two", "Two-Three"],
    ["", "Three-One", "Three-Two", "Three-Three"]
  ];
  // Build it for select 3 yourself.
  $("#sel-1").html(function () 
    var final = "";
    $.each(sel_1, function (i, v) 
      final += "<option value='" + i + "'>" + v + "</option>";
    );
    return final;
  ).change(function () 
    reset(2);
    var final = "";
    $.each(sel_2[$(this).val()], function (i, v) 
      final += "<option value='" + i + "'>" + v + "</option>";
    );
    $("#sel-2").html(final).off("change").change(function () 
      $("#sel-3").html('');
    );
  );
  function reset(sel) 
    if (sel == 2)
      $("#sel-2, #sel-3").html("");
    else if (sel == 3)
      $("#sel-3").html('<option value="item-2">Item 1</option><option value="item-3">Item 2</option><option value="item-4">Item 3</option>');
  
);
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<select name="sel-1" id="sel-1"></select>
<select name="sel-2" id="sel-2"></select>
<select name="sel-3" id="sel-3"></select>

【讨论】:

以上是关于如何为表单的 <select> 关系应用 if 语句的主要内容,如果未能解决你的问题,请参考以下文章

如何为浏览器的自动填充将“同义词”添加到 <select> 元素的 <option>?

在 HTMX 中,如何为选择表单元素中的每个选项请求特定的 URL?

如何为反向外键关系创建内联表单集

如何为表单框添加边框?

如何为网页 <select> 框创建复杂的数据绑定?

如何为每个 select2 选项使用不同的颜色?