简体   繁体   English

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

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

I am new to web development, need help with PHP coding for a form. 我是Web开发的新手,需要有关PHP表单编码的帮助。

A form with 5 dropdown list needs to be created. 需要创建一个包含5个下拉列表的表单。 The values in 1st dropdown list would be "A,B,C,D,E,F,G". 第一个下拉列表中的值为“ A,B,C,D,E,F,G”。 If suppose "C" is selected in 1st dropdown, then 2nd dropdown will have all the values except "C" ie; 如果假设在第一个下拉列表中选择了“ C”,则第二个下拉列表将具有除“ C”以外的所有值,即; "A,B,D,E,F,G". “A,B,d,E,F,G”。 If suppose we select "A" in second dropdown, the values shown in 3rd dropdown would be all the values except the value chosen in dropdown 1 & 2. So value in dropdown 3 would be "B,D,E,F,G. 如果假设我们在第二个下拉列表中选择“ A”,则第三个下拉列表中显示的值将是除下拉列表1和2中选择的值以外的所有值。因此,下拉列表3中的值将为“ B,D,E,F,G”。

Similarly, it will happen for other two dropdown boxes. 同样,其他两个下拉框也会发生这种情况。

One way you could try is to keep track of what options need to be removed in an array. 您可以尝试的一种方法是跟踪需要在阵列中删除哪些选项。 Then you could define which select controls which. 然后,您可以定义哪个选择控制哪个。 Take this example: 举个例子:

given this html 给定这个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>

you could use this jquery 你可以使用这个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()); keeps track of all the previously selected values, then the $.each removes (or in this case, disables) the unwanted options from the next select in line, which is stored in the select 's var property. 跟踪所有先前选择的值,然后$.each从下一个select的行中删除(或在这种情况下,禁用)不需要的选项,该select存储在selectvar属性中。

Here's an example. 这是一个例子。

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

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

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