jQuery选择name为array的input元素

时间:2015-09-28 19:37:42

标签: jquery jquery-selectors

我用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。

4 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分:1)

将“类型”从“文本”更改为“输入”,并删除明确的“类型”声明:

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

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

过去那个,关于用于dom属性的字符的注释:

对于HTML5之前的版本,如果您在属性中使用括号,则会出现片状行为,例如ID和名称。

  

ID和NAME令牌必须以字母([A-Za-z])开头,可能是   后跟任意数量的字母,数字([0-9]),连字符(“ - ”),   下划线(“_”),冒号(“:”)和句点(“。”)。

您可以通过HTML5文档类型删除括号:

  

HTML 5更宽容,只说id必须包含at   至少一个字符,可能不包含任何空格字符。

有关详情:What are valid values for the id attribute in HTML?

我建议为你的id提出不同的命名方案,然后你的选择器会更直接。

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

答案 2 :(得分:1)

我正在这里练习线程死灵术,所以提前道歉。该线程在搜索中返回,但缺乏可用的答案,所以我希望能让后续的人受益。

上述方括号元素所需的选择是: $('#order\\[name\\]').val()

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

答案 3 :(得分:-1)

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

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

进行访问