繁体   English   中英

下拉列表,其中不包括在上一个下拉列表中选择的值:PHP

[英]Dropdown list which excludes value selected in previous dropdown list: PHP

我是Web开发的新手,需要有关PHP表单编码的帮助。

需要创建一个包含5个下拉列表的表单。 第一个下拉列表中的值为“ A,B,C,D,E,F,G”。 如果假设在第一个下拉列表中选择了“ C”,则第二个下拉列表将具有除“ C”以外的所有值,即; “A,B,d,E,F,G”。 如果假设我们在第二个下拉列表中选择“ A”,则第三个下拉列表中显示的值将是除下拉列表1和2中选择的值以外的所有值。因此,下拉列表3中的值将为“ B,D,E,F,G”。

同样,其他两个下拉框也会发生这种情况。

您可以尝试的一种方法是跟踪需要在阵列中删除哪些选项。 然后,您可以定义哪个选择控制哪个。 举个例子:

给定这个html

<select id="a" var="b">
    <option>-- SELECT --</option>
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    <option value="d">d</option>
    <option value="e">e</option>
</select>

<select id="b" var="c" disabled>
    <option>-- SELECT --</option>
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    <option value="d">d</option>
    <option value="e">e</option>
</select>

<select id="c" disabled>
    <option>-- SELECT --</option>
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
    <option value="d">d</option>
    <option value="e">e</option>
</select>

你可以使用这个jQuery

var doNotShow = [];

$('select').change( function() {

  var nextSelect = $(this).attr("var");

  doNotShow.push($(this).val());

  $.each(doNotShow, function( index, value ) {
    $("#" + nextSelect + " option[value='" + value + "']").prop('disabled', true);

  });

  $("#" + nextSelect).prop('disabled', false);
  $(this).prop('disabled', true);

});

doNotShow.push($(this).val()); 跟踪所有先前选择的值,然后$.each从下一个select的行中删除(或在这种情况下,禁用)不需要的选项,该select存储在selectvar属性中。

这是一个例子。

这将使用jquery甚至Javasript完成,使用jQuery您可以阅读.change()函数的文档,对于具有onchange属性的Javascript,请尝试阅读此问题,它将对您有所帮助: HTML SELECT-触发器即使选项未更改,JavaScript ONCHANGE事件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM