根据另一个选择中的值从一个选择中删除选项


Removing options from one select, based on the value in another select

我的代码从数据库中读取2个数据,如果这些数据是特定的值,那么它应该从名为smjer的选择中删除值2,3,4,5,6,7,8。数据库中的值在外部。php脚本中读取,然后使用GET发送回网页。我的问题是:在一个特定的情况下,当代码中的第二个选择被设置为3时,代码应该只从select smjer中删除第二个和第三个值。我用jQuery做过这个,它可以工作,但我的问题是,当我改变其他选择的值时,例如,从2,我选择值3,什么都没有发生,所以我必须刷新页面,所以我的改变将适用。选择看起来像这样:

<select name="smjer" class="smjer">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
第二选择:

<select name="godina" class="upis">
<option value="1" >1.</option>
<option value="2" >2.</option>
<option value="3">3.</option>
</select>

和移除的代码:

<?php }
if(($_GET['program1'])=='1'&&($_GET['stupanj_spreme1']=='2'))
{?>
<script>
$(document).ready(function(e) {
    var ary=[2,3,4,5,6,7,8];
var provjera=$('.upis').val();
if(provjera=='3')
{
    var ary=[2,3];
}
$('[name=smjer] option').filter(function(){
return ($.inArray(parseInt(this.value),ary) >-1);
}).remove();
});
</script>
<?php } ?>

我一直在网上阅读,像这样的事情应该用AJAX完成,但我不知道任何关于AJAX,我想避免它。

与其只运行一次javascript,不如将其绑定到select的change事件:

$(document).ready(function(e) {
  // When the value of the select changes, run this:
  $('.upis').change(function(){
    var ary=[2,3,4,5,6,7,8];
    var provjera=$('.upis').val();
    if(provjera=='3')
    {
      var ary=[2,3];
    }
    $('[name=smjer] option').filter(function(){
      return ($.inArray(parseInt(this.value),ary) >-1);
    }).remove();
  });
});

另外,最佳实践:如果你不希望"upis"永远应用于本页的其他元素,请考虑使用id而不是class。