jQuery选择名称为数组的输入元素

jQuery选择名称为数组的输入元素,jquery,jquery-selectors,Jquery,Jquery Selectors,我在谷歌上搜索了半个小时,找不到解决方案,但我认为这应该是非常简单的事情 这是我的密码 <input name="order[name]" id="order[name]" type="text"> <script> $(document).ready(function(){ $("#previewForm").click(function(){ var orderName = $("input[type=text][na

我在谷歌上搜索了半个小时,找不到解决方案,但我认为这应该是非常简单的事情

这是我的密码

<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>

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

编辑: 看起来这是可行的,我甚至不确定在这个过程中我在哪里用另一个错误替换了一个错误

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

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

感谢大家抽出时间,我再次为没有立即试用JSFIDLE而道歉。

试试这个

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

将类型从文本更改为输入,并删除显式类型声明:

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

$("input[type=input][name='order[name]']")
除此之外,还有一个关于用于dom属性的字符的注释:

对于HTML5之前的版本,如果在属性(如id和名称)中使用括号,则会出现不稳定的行为

ID和名称标记必须以字母[a-Za-z]开头,并且可以是 后跟任意数量的字母、数字[0-9],连字符-, 下划线、冒号和句点

不过,您可以通过HTML5 doctype摆脱括号:

HTML5甚至更为宽松,只规定id必须至少包含 至少一个字符,不能包含任何空格字符

有关详细信息:

我建议为您的id使用不同的命名方案,这样您的选择器就会更简单

多属性选择器示例:

此处不允许更改为方括号,如果指定了I,则不需要名称-确保ID是唯一的


使用-$inputorder_name.val访问

我在这里练习线程巫术,请提前道歉。此线程在搜索中返回,但缺少可用的答案,因此我希望能让后面的人受益

如上所述,方括号中的元素需要选择: $'order\\[name\\]'.val

感谢以下线程:

您可以使用名称attr来选择输入,您不需要类型,每个人都说这是不允许的,但您的选择器在我尝试的每个浏览器和JQuery的每个版本中都适用。@wwwmarty我将答案从不允许更改为flaky是您的确切代码,它工作得很好。即使我将orderName更改为“某些文本”,这也不起作用。表单非常大,在后面经过验证,如果我更改名称方案,确实有很多东西需要更改,我真的希望还有其他选择。文档是否定义为HTML5,或者是否有其他内容。我自学成才,所以可能是我错过了一些重要的东西。@dbr您使用的是哪种doctype?如果不是HTML5,这可能会改变?我在上面编辑了我的评论。如果你还没有看到,请留个便条。@dbr好的,是的,这就是HTML5doctype@dbr您忘记加载jQuery了。从左上角的菜单中选择它。代码远不止这些,因此更改名称方案将是我最后一次尝试,因为修复验证需要两天的时间,谁知道还会出现什么。在这种情况下,您可能可以为此输入元素指定一个类,并使用$input.myUniqueClass.val;进行访问;。不要触摸现有属性,但同时避免在代码中使用它们。
<script>
    $(document).ready(function(){
        $(document).on('click',"#previewForm",function(){
            var orderName = $("input[name='order[name]']").val();
            $( "#contactCollected" ).text( orderName );
        });
    });
</script>
<input name="order[name]" id="order[name]" />

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