下拉列表排除了在上一个下拉列表中选择的值:PHP

时间:2014-04-03 18:54:05

标签: php jquery drop-down-menu

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

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

同样,其他两个下拉框也会发生。

2 个答案:

答案 0 :(得分:1)

您可以尝试的一种方法是跟踪数组中需要删除的选项。然后你可以定义哪个选择控件。举个例子:

给出这个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的{​​{1}}属性中。

Here's an example.

答案 1 :(得分:0)

这将通过jquery或者使用Javasript来完成,使用jQuery可以阅读.change()函数的文档,对于带有onchange属性的Javascript,尝试阅读这个问题它会对你有所帮助: HTML SELECT - Trigger JavaScript ONCHANGE event even when the option is not changed