在另一个</select>框中选中时禁用<select>选项

时间:2016-05-21 09:49:08

标签: javascript jquery html select

我在php mail()表单中有一组16个选择框,如果在任何其他框中选择了该选项,我想禁用该选项。 选择框中的选项顺序不相同,我需要php邮件的值。 我希望填写表单的用户无法选择两次或更多相同的选项。

<select name="box1" id="box1">
    <option value="One">One</option>
    <option value="Two">Two</option>
    <option value="Three">Three</option>
</select>

<select name="box2" id="box2">
    <option value="Two">Two</option>
    <option value="One">One</option>
    <option value="Three">Three</option>
    <option value="Life">Life</option>
</select>

<select name="box3" id="box3">
    <option value="Life">Life</option>
    <option value="One">One</option>
    <option value="Two">Two</option>
</select>

此外,在网站的下方,我想对另一组8个选择框做同样的事情 - 它们包含一些相同的选项,但是我希望它们从一开始就可以选择,直到从其中一个被选中。

我对jQuery和JavaScript知之甚少。帮助

2 个答案:

答案 0 :(得分:3)

  

使用.filter获取值与当前值类似的option-elements。

$('select').on('change', function() {
  $('option').prop('disabled', false); //reset all the disabled options on every change event
  $('select').each(function() { //loop through all the select elements
    var val = this.value;
    $('select').not(this).find('option').filter(function() { //filter option elements having value as selected option
      return this.value === val;
    }).prop('disabled', true); //disable those option elements
  });
}).change(); //trihgger change handler initially!
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<select name="box1" id="box1">
  <option value="One">One</option>
  <option value="Two">Two</option>
  <option value="Three">Three</option>
</select>

<select name="box2" id="box2">
  <option value="Two">Two</option>
  <option value="One">One</option>
  <option value="Three">Three</option>
  <option value="Life">Life</option>
</select>

<select name="box3" id="box3">
  <option value="Life">Life</option>
  <option value="One">One</option>
  <option value="Two">Two</option>
</select>

Fiddle Demo

答案 1 :(得分:0)

谢谢,人龙。 我终于用这段代码完美地工作了:

<script type="text/javascript">
  $('select[name*="box1"]').change(function(){
  $('select[name*="box1"] option').attr('disabled',false);

  $('select[name*="box1"]').each(function(){
    var $this = $(this);
    $('select[name*="box1"]').not($this).find('option').each(function(){
       if($(this).attr('value') == $this.val())
           $(this).attr('disabled',true);
    });
});

});
</script>