Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery选择器,用于名称属性中带有方括号的输入_Javascript_Jquery_Input_Jquery Selectors - Fatal编程技术网

Javascript jQuery选择器,用于名称属性中带有方括号的输入

Javascript jQuery选择器,用于名称属性中带有方括号的输入,javascript,jquery,input,jquery-selectors,Javascript,Jquery,Input,Jquery Selectors,我正在尝试选择名称属性中包含方括号的元素: <input type="text" name="inputName[]" value="someValue"> 这也不是: $('input[inputName&#91;&#93;=someValue]') 或者这个: $('input["inputName[]"=someValue]') 编辑:正如你们中的一些人指出的,$('input[inputName=someValue]')永远不会起作用。我试图做的是:$(

我正在尝试选择名称属性中包含方括号的元素:

<input type="text" name="inputName[]" value="someValue">
这也不是:

$('input[inputName&#91;&#93;=someValue]')
或者这个:

$('input["inputName[]"=someValue]')

编辑:正如你们中的一些人指出的,
$('input[inputName=someValue]')
永远不会起作用。我试图做的是:
$('input[name=inputName][value=someValue]')
。(但在名称属性中使用
[]

属性选择器语法为
[name=value]
,其中
名称
为属性名称,
为属性值

因此,如果要选择属性为
name
且值为
inputName[]
的所有
input
元素:

$('input[name="inputName[]"]')
如果要检查两个属性(此处:
name
value
):


您可以使用反斜杠在jQuery选择器中引用“有趣”字符:

$('#input\\[23\\]')
对于属性值,可以使用引号:

$('input[name="weirdName[23]"]')
现在,我对你的例子有点困惑;你的HTML到底是什么样子的?特别是字符串“inputName”显示在哪里

编辑固定转向架;谢谢@Dancrumb

,请尝试以下内容:

$('input[inputName\\[\\]=someValue]')
[编辑] 但是,我不确定这是否是选择器的正确语法。您可能想要:

$('input[name="inputName[]"][value="someValue"]')

如果选择器包含在变量中,下面的代码可能会有所帮助:

selector_name = $this.attr('name');
//selector_name = users[0][first:name]

escaped_selector_name = selector_name.replace(/(:|\.|\[|\])/g,'\\$1');
//escaped_selector_name = users\\[0\\]\\[first\\:name\\]

在本例中,我们使用双反斜杠作为所有特殊字符的前缀。

只需使用不同的引号将其分开:

<input name="myName[1][data]" value="myValue">

抢手货需要两个反斜杠的原因是,一个反斜杠被解释为JavaScript字符串转义字符,因此您需要两个反斜杠来指定一个文字反斜杠,它将转义字符提供给选择器。。。啊,多重角色逃离的乐趣。谢谢你。这只是使用正则表达式的问题。这在将表单数据直接提交到您喜爱的视图框架中的数组或列表时非常有用。这也帮助我回答了有关删除具有多个主键元素的对象的问题。;)我无法使用
$('select[name=foo\\[bar\\]]].
选择(恰巧是一个select标记),但是我可以使用
$('select[name=“foo[bar]”)
,这是您的第二个建议。这个答案应该在顶部。这是最简单的。交换了报价,这对我很有效。感谢选择器。替换(/([|])/g,'\\\\$1');对我来说效果更好一点,因为它添加了转义斜杠,并生成了两个,而不是一个转义斜杠…@Fydo请记住,您还需要转义其他一些字符,包括冒号、句点
selector_name = $this.attr('name');
//selector_name = users[0][first:name]

escaped_selector_name = selector_name.replace(/(:|\.|\[|\])/g,'\\$1');
//escaped_selector_name = users\\[0\\]\\[first\\:name\\]
<input name="myName[1][data]" value="myValue">
var value = $('input[name="myName[1][data]"]').val();