如何使用 jquery 从复杂的输入名称中获取值

Posted

技术标签:

【中文标题】如何使用 jquery 从复杂的输入名称中获取值【英文标题】:How to get value with jquery from complex input name 【发布时间】:2019-01-04 18:44:06 【问题描述】:

这是我的情况:

我正在尝试从具有name="data[type][answer]" 的表单输入中获取价值,例如:

<form id="form" method="POST" >
<input type="hidden" name="data[type][answer]" value="Hello from Space">
</form>

所以,我的函数代码应该是这样的:

 function queryForm(key) 
   return $('#form input[name=' + key + ']').val();
 

我收到了input[name=order[type][answer]],但它不起作用,我知道原因。

有没有办法以不同的方式编写这个东西,或者有没有其他方法可以获取价值?顺便说一句,我需要这种形式的名称:name="data[type][answer]"

任何建议或解决方案都会很好!

【问题讨论】:

试试这个function queryForm(key) return $('#form input[name=' + key + ']')[0].val(); @Stranger 我认为您的解决方案会引发脚本错误。 How do I select an element with special characters in the ID?的可能重复 【参考方案1】:

您只需要为name 的值加上引号。然后你必须从返回的结果中选择第一个结果并用jquery再次包装它才能调用.val()

function queryForm(key) 
    return $("#form input[name='" + key + "']").first()
      .val();

 
console.log(queryForm('data[type][answer]'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <html>
    <head></head>
    <body>
    <form id="form" method="POST" >
    <input type="hidden" name="data[type][answer]" value="Hello from Space">
    </form>
    </body>
    </html>

【讨论】:

几个小窍门让这个过程更简单一些:使用双引号而不是转义单引号。使用 .first() 而不是使用 [0] 并用另一个 jQuery 调用包装结果。【参考方案2】:

您只需要...

function queryForm(key) 
   return $('#form input[name="' + key + '"]').val();

注意键周围的双引号 (")。

【讨论】:

以上是关于如何使用 jquery 从复杂的输入名称中获取值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jquery生成动态输入并通过id获取值

按名称选择器,在我的类名 jQuery 的框中

如何使用jQuery从输入字段中获取图像

需要使用Jquery按元素名称获取标签名称[重复]

根据先前的输入从数据库中获取输入值

如何从jquery中的输入中获取精确值