2017-10-20 117 views
0

我有一个JavaScript代码来填充第二个选择框的基础上的第一个选择,但我有一些麻烦,使其正常工作。更改第一个选择记录

如果我至少有2个选择值,在更改事件时会正确触发下一个选择框,但是如果我只有一个选项,因为更改事件是不可能的,我如何才能使它触发下一个选择框与加载的值?

<script type="text/javascript"> 
jQuery(document).ready(function() { 
$("#category").change(function(){ 
var selectedCategory = $("#category option:selected").val(); 
$.ajax({ 
    type: "POST", 
    url: "subcategories.php", 
    data: { category : selectedCategory } 
}).done(function(data){ 
    $("#subcategory").html(data); 
}); 
}); 

}); 
</script> 

基本上,如果我的代码至少有2个选择,它的工作原理:

<select name="category" class="form-control" id="category"> 
<option value="1">Category 1</option> 
<option value="2">Category 2</option> 
</select> 

Otherwhise如果只有一个选择这是行不通的,因为我可以不火的change事件:

<select name="category" class="form-control" id="category"> 
<option value="1">Category 1</option> 
</select> 

我想在不使用选择框中的“选择...”之类的“虚拟选择选项”的情况下使其工作。什么可能是实现它的最好方法。我花了好几个小时才把它做好。

+0

你可以在初始页面加载时将第二个设置为1st吗? – Confuzing

回答

3

事实上,如果选择标签中只有一个选项,则不会更改事件。做一个函数,并在加载文件后立即调用,并且在更改事件中

<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     $("#category").change(function(){ 
      getSubCat();//get sub category after change event 
     }); 
     getSubCat();//get sub category after page load 
     function getSubCat(){ 
      var selectedCategory = $("#category option:selected").val(); 
      $.ajax({ 
       type: "POST", 
       url: "subcategories.php", 
       data: { category : selectedCategory } 
      }).done(function(data){ 
       $("#subcategory").html(data); 
      }); 
     } 
    }); 
</script> 
+0

我试过这段代码,只在选择框中更改时才起作用。 – Tiago

+0

@Tiago:对不起,我现在把代码放在错误的地方。 – C2486

0

我找到了一个解决方案,但不知道它是否是最好的方法。等待您对此选项的担忧。

基本上我加倍了代码。 一个与变更事件,而另一个只是所选择的选项:

<script type="text/javascript"> 
jQuery(document).ready(function() { 

var selectedCategory = $("#category option:selected").val(); 
$.ajax({ 
    type: "POST", 
    url: "subcategories.php", 
    data: { category : selectedCategory } 
}).done(function(data){ 
    $("#subcategory").html(data); 
}); 

$("#category").change(function(){ 
var selectedCategory = $("#category option:selected").val(); 
$.ajax({ 
    type: "POST", 
    url: "subcategories.php", 
    data: { category : selectedCategory } 
}).done(function(data){ 
    $("#subcategory").html(data); 
}); 
}); 

}); 
</script> 

这是做了正确的方法,或者我应该改变些什么呢?

相关问题