jQuery select 名称为数组的输入元素

jQuery select input element with name as array

我在 Google 上搜索了半小时,但找不到解决方案,但我认为这应该非常简单。

这是我的代码

<input name="order[name]" id="order[name]" type="text">

<script>
    $(document).ready(function(){
        $("#previewForm").click(function(){
            var orderName = $("input[type=text][name='order[name]']").val();
            $( "#contactCollected" ).text( orderName );
        });
    });
</script>

我希望用户预览他刚刚填写的表格。

正在替换

$( "#contactCollected" ).text( orderName );

$( "#contactCollected" ).text( 'some text' );

有效,所以我认为这是选择器问题。如有必要,我可以提供更多代码。

编辑: 看起来这是按原样工作的,我什至不确定在这个过程中我在哪里用另一个错误替换了一个错误。

感谢评论中的所有人,特别是@Barmar 和@Jonathan.Brink。

我不会删除这个问题,因为在输入元素中讨论了命名 ID,但我不确定规则。

感谢大家的宝贵时间,我再次为没有立即试用 jsfiddle 表示歉意。

试试这个

<script>
    $(document).ready(function(){
        $(document).on('click',"#previewForm",function(){
            var orderName = $("input[name='order[name]']").val();
            $( "#contactCollected" ).text( orderName );
        });
    });
</script>

将您的 "type" 从 "text" 更改为 "input" 并删除您的显式 "type" 声明:

<input name="order[name]" id="order[name]" />

$("input[type=input][name='order[name]']")

之后,关于用于 dom 属性的字符的注释:

对于 HTML5 之前的版本,如果您在属性中使用方括号,例如 id 和 name,将会出现不稳定的行为。

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

虽然您可以使用 HTML5 文档类型来摆脱括号:

HTML 5 is even more permissive, saying only that an id must contain at least one character and may not contain any space characters.

更多详情:What are valid values for the id attribute in HTML?

我建议为您的 ID 想出一个不同的命名方案,这样您的选择器会更直接。

多属性选择器示例:https://api.jquery.com/multiple-attribute-selector/

将 - <input name="order[name]" id="order[name]" type="text"> 更改为 <input id="order_name" type="text"> --(此处不允许使用方括号,如果指定 I,则不需要名称 - 确保 ID 是唯一的)。

访问使用 - $("input#order_name").val();

我在这里练习线程死灵法术所以提前道歉。此话题在搜索中返回,但缺少可用的答案,因此我希望对后续的人有所帮助。

上面带方括号的元素需要的select是: $('#order\[name\]').val()

感谢以下主题: How do I get jQuery to select elements with a . (period) in their ID?