如何返回一个<;的第n个值;输入>;在jQuery中?

如何返回一个<;的第n个值;输入>;在jQuery中?,jquery,Jquery,如果只有一个输入元素,那么我可以使用: $("input").val() 我知道.val()返回第一个匹配元素的value属性的值 但是如果有多个输入呢?给定一个表单,这将帮助您获取该表单的所有输入元素,然后您就可以获取它们的值 $("form").each(function(){ $(this).find(':input') //<-- Should return all input elements in that specific form. }); $(“表单”)。每个(函数(

如果只有一个输入元素,那么我可以使用:

$("input").val()
我知道
.val()
返回第一个匹配元素的value属性的值


但是如果有多个输入呢?

给定一个表单,这将帮助您获取该表单的所有输入元素,然后您就可以获取它们的值

$("form").each(function(){
$(this).find(':input') //<-- Should return all input elements in that specific form.
});
$(“表单”)。每个(函数(){

$(this).find(':input')/一种简单的方法是循环查找每个值:

 $('input').each(function(i, value){
      // i = index value for each input
      // value = actual value 
 })

您必须使用css伪类
:n子元素
,然后检索第一个元素


第二个参数不是inputElement的值,您需要用$()再次包装它以使用.val()

如果有多个匹配项,jQuery将返回匹配元素的(基于零的)数组

因此,如果您特别想访问第二个输入元素的值,可以这样做:

$("input")[1].value
注意,这里访问的是DOM元素数组,而不是jQuery对象,因此不能使用
.val()
,而必须使用元素的value属性

要获取第n个元素的jQuery对象,可以使用jQuery的:eq()选择器,如下所示:

$("input:eq(1)").val()

虽然这个问题的其他答案在技术上是正确的,但以这种方式设计表单和脚本是非常糟糕的做法。它很脆弱,很难维护。如果输入字段的数量或这些字段的顺序发生变化,您的代码将中断。例如,如果您后来决定在网站的在模板中,所有输入字段的索引都会增加1,并破坏所有内容

我建议您对表单字段采取基于名称或ID的方法,以便每个字段都有明确的用途,并且可以通过jQuery轻松找到。如果您的表单字段已经有名称(如果您使用GET或POST使用传统HTML表单,它们应该有名称),那么您可以使用它们。您还可以为它们提供唯一的ID

<input name="Input1" id="MyInput1" value="" >
<input name="Input2" id="MyInput2" value="" >
如果您每页有多个表单,那么最佳实践将再次发生轻微变化,但只有在您需要的时候,我才会详细说明


我希望这有助于您了解更大的情况,以便开发更好的表单。

您可能需要循环它们,或者找到一种方法来更具体地识别该表单。“但是如果有多个输入呢?”当有多个输入时,您希望发生什么?您需要告诉我们您的要求。如果您希望获取特定输入的值,则通过其ID获取该元素,而不是搜索每个
input
标记。@Maor P请给出我的答案,我认为它符合您的要求for@BoffinbraiN我需要将它们分配给不同的va变量,并用它做各种算术运算them@ChristopheDebove谢谢!//value=实际值不一致。我的答案非常具体地回答了按顺序获取值的问题,但是一个好的设计应该为关键元素指定有意义的唯一标识符。简单有效。谢谢
$("input:eq(1)").val()
<input name="Input1" id="MyInput1" value="" >
<input name="Input2" id="MyInput2" value="" >
var input1 = $("#MyInput1").val(); // Get by ID
var input2 = $("[name=Input2]").val(); // Get by input's name