【问题标题】:Select a OPTION in a SELECT with jQuery is not working in Firefox在带有 jQ​​uery 的 SELECT 中选择一个选项在 Firefox 中不起作用
【发布时间】:2026-01-13 15:40:01
【问题描述】:

这是一个奇怪的问题,它在 IE 中有效,但在 Firefox 中无效。

我有一个SELECT 控件,当获得焦点时,在AJAX 调用中使用OPTIONs 检索HTML

onfocus 事件处理程序包含以下代码:

var selectedValue = $(":input[name='" + fieldName + "']").val();

var dataRetrieved = function(data)
{
    $(":input[name='" + fieldName + "']").html(data);
    $(":input[name='" + fieldName + "']").val(selectedValue);
    alert("data: " + data);
    alert("former value: " + selectedValue);
};

    $.post(url, data, dataRetrieved);

第一个警报显示:

data: <option value=""/>
<option value="1" >a1</option>
<option value="2" >a2</option>
<option value="3" >a3</option>

第二个:

former value: 3

所以它应该可以工作,实际上它在 Internet Explorer 中可以工作(让我觉得我在 HTML 上做错了什么)

知道可能是什么问题吗?

谢谢。

【问题讨论】:

    标签: javascript jquery html firefox web-standards


    【解决方案1】:

    输入选择器前面不需要冒号。您的选择器应如下所示:

    $("input[name='" + fieldName + "']")
    

    不是

    $(":input[name='" + fieldName + "']")
    

    这是我对为什么它可能不起作用的第一个猜测。

    【讨论】:

    • api.jquery.com/input-selector 这就是我在文档中看到的:P 我已经尝试过了,它仍然是一样的。无论如何,它正在 IE 上运行。
    • ":input" 实际上选择了表单中的所有控件(即文本区域、选择、按钮),而不仅仅是输入,所以在使用时要小心。具体是什么不工作?还有,ajax调用的代码是什么样的?
    • 很高兴知道 :) ajax 调用中的代码(此时)始终返回该 HTML 代码。基本上,一开始服务器只为 SELECT 提供一个 OPTION(在数据库中选择的那个),但是如果你关注控件,控件就会充满所有选项。我想要实现的是存储当前选择的值,上传控件选项,然后重新选择以前的选择,这在 Firefox 中不起作用。我意识到的另一件事是,只有当我在获取新 HTML 时将下拉菜单保持打开状态时才会发生此问题 :(
    最近更新 更多