Jquery 选择combobox中的项,该项根据AJAX请求填充
我有以下JavaScript/jQuery问题:Jquery 选择combobox中的项,该项根据AJAX请求填充,jquery,ajax,Jquery,Ajax,我有以下JavaScript/jQuery问题: Combobox通过调用web服务在客户端填充 填充后在组合框中选择一项 我无法发布全部代码,但尝试剪掉有趣的部分: HTML: <select name="RegionId"> </select> $(function () { $.getJSON('/hotels/GetRegionsByCountry/1', function (data) { var items = [];
<select name="RegionId">
</select>
$(function () {
$.getJSON('/hotels/GetRegionsByCountry/1', function (data) {
var items = [];
$.each(data, function (index) {
items.push('<option value="' + this.Id + '">' + this.Name + '</option>');
});
$("[name='RegionId']").html(items.join(''));
});
$("[name='RegionId']").val("24");
});
JavaScript:
<select name="RegionId">
</select>
$(function () {
$.getJSON('/hotels/GetRegionsByCountry/1', function (data) {
var items = [];
$.each(data, function (index) {
items.push('<option value="' + this.Id + '">' + this.Name + '</option>');
});
$("[name='RegionId']").html(items.join(''));
});
$("[name='RegionId']").val("24");
});
$(函数(){
$.getJSON('/hotels/GetRegionsByCountry/1',函数(数据){
var项目=[];
$。每个(数据、函数(索引){
items.push(“”+此.Name+“”);
});
$(“[name='RegionId']”)html(items.join(“”));
});
$(“[name='RegionId']”)val(“24”);
});
问题:组合框填充后(1)选择失败(2)
在我看来,jQuery无法访问已填充的项。但是为什么呢?为输入字段赋值是在填充字段之前执行的(请求尚未完成)。 试试这个:
$(function () {
$.getJSON('/hotels/GetRegionsByCountry/1', function (data) {
var items = [];
$.each(data, function (index) {
items.push('<option value="' + this.Id + '">' + this.Name + '</option>');
});
$("[name='RegionId']").html(items.join(''));
$("[name='RegionId']").val("24");
});
});
$(函数(){
$.getJSON('/hotels/GetRegionsByCountry/1',函数(数据){
var项目=[];
$。每个(数据、函数(索引){
items.push(“”+此.Name+“”);
});
$(“[name='RegionId']”)html(items.join(“”));
$(“[name='RegionId']”)val(“24”);
});
});
试着这样做:
$(function () {
$.getJSON('/hotels/GetRegionsByCountry/1', function (data) {
var select = $("[name='RegionId']");
$.each(data, function (index) {
select.append('<option value="' + this.Id + '">' + this.Name + '</option>');
});
$("[name='RegionId']").val("24");
});
});
$(函数(){
$.getJSON('/hotels/GetRegionsByCountry/1',函数(数据){
var select=$(“[name='RegionId']”);
$。每个(数据、函数(索引){
select.append(“”+this.Name+“”);
});
$(“[name='RegionId']”)val(“24”);
});
});
您不必使用数据[索引]
而不是此
?也许我错了,代码的这一部分很好用。最后一行(.val)不起作用。@AdolAurion在$的上下文中。each()
,此
引用迭代中的特定项,它实际上是数据[索引]
,因此任何一种方法都应该起作用。是的,正如$(“[name='RegionId']”)一样。val()
不会给您选择的选项,我认为您也不能以这种方式强制选择行。您是否尝试过手动设置所选选项,例如var selected=//ID为“24”的选项;选定。道具(“选定”)代码>目标是手动将选定特性添加到该行。由于您是从头开始构建组合框,所以这次不必检查其他选定行。哦,我明白了。非常感谢。但所选内容不能在事件处理程序中。这必须在将值加载到组合框后发生。请确保下拉列表中包含值为24的。感谢您发现此问题。我使用同步AJAX请求解决了这个问题,因为我不想重复代码:(使用ajaxSetup查找Jonathan的答案)