带有JQuery的Firefox中的AJAX下拉列表(HTML选择)
时间:2020-03-05 18:51:46 来源:igfitidea点击:
帮助!我正在使用JQuery进行AJAX调用,以根据用户的先前输入(从另一个下拉列表(已填充服务器端))动态填充下拉列表。在除Firefox(IE6 / 7,Opera,Safari)之外的所有其他浏览器中,我的append调用实际上将信息添加到现有选项" Select An"下方。但是在Firefox中,无论我将JQuery操作指定为.append还是替换(.html()),它都会自动选择提供给select控件的最后一项。
<select name="Products" id="Products" onchange="getHeadings(this.value);"> <option value="">Select Product</option> </select> function getProducts(Category) { $.ajax({ type: "GET", url: "getInfo.cfm", data: "Action=getProducts&Category=" + Category, success: function(result){ $("#Products").html(result); } }); };
有什么想法吗?过去,我也尝试过传输另一个空白的first选项,然后触发javascript选项来重新选择第一个索引,但这会在我的代码中触发onChange事件,这对用户来说很烦人。
更新:
这是脚本返回的示例
<option value="3">Option 1</option> <option value="4">Option 2</option> <option value="6">Option 3</option>
可选地,如果使用.html()方法而不是.append(),我会另外放置一个
<option value="">Select a Product</option>
在结果的顶部。
@达里尔·海因(Darryl Hein)
这是脚本返回的示例
<option value="3">Option 1</option> <option value="4">Option 2</option> <option value="6">Option 3</option>
可选地,如果使用.html()方法而不是.append(),我会另外放置一个
<option value="">Select a Product</option>
在结果的顶部。
解决方案
回答
最后发送" Select An ..."选项如何?
回答
我只是做了以下工作,但效果很好:
<select name="Products" id="Products"> <option value="">Select Product</option> </select> <script type="text/javascript"> $('#Products').append('<option value="1">test 1</option><option value="3">test 3</option><option value="3">test 3</option>'); </script>
脚本返回什么?
回答
我们能否仅更改成功功能以将所选项目重置为第一个选项?
$("#Products").append(result).selectedIndex = 0;
或者将其设置为上一个选择?
var tmpIdx = $("#Products").selectedIndex; $("#Products").append(result).selectedIndex = tmpIdx;
如果不应触发onChange事件,则可以始终设置一个标志以指示表单正在更新,并且change事件可以检查该标志并退出(如果已设置)。
回答
$('#field').find('option:first').attr('selected', 'selected').parent('select');
看到这会工作