带有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');

看到这会工作