JQuery语法,带.val(“”); (返回数组)

时间:2011-11-24 21:39:25

标签: javascript jquery arrays syntax

我对Jquery很新,所以我对如何执行下面描述的内容感到有点困惑......

我要做的是:

  1. 在整个页面中搜索包含单词Rate的输入文本框,然后再搜索Quantity。

  2. 进行计算,(费率*数量)总和

  3. 将结果呈现给用户。

  4. 我做了什么

    1. 由于行是动态添加的,因此元素名称中有GUID,因此我会搜索它们。
    2. 我需要帮助的地方

      我可以使用.val(“”)命令提取值,但我对如何执行我需要的步骤的语法感到困惑。

      这就是我所拥有的:

        $("#alertButton").live("click", function () {
                      var rateValues = $('input[name*="Rate"]').val("");
                      var qtyValues = $('input[name*="Qty"]').val(""); 
      
                                 //how do i handle it here
      
                  });
      

      这是一个速率文本框的呈现方式,就像在html中一样(可能有0到多个,因为它们被动态添加到页面中)

      <input type="text" value="0" style="width: 100%;" name="JobDetails[dd1c94e5-5e83-4a92-b5c4-0a5aea0eb5df].Rate" id="JobDetails___randomNumber___Rate" data-val-required="The Rate (Exl GST) field is required." data-val-number="The field Rate (Exl GST) must be a number." data-val="true">
      

3 个答案:

答案 0 :(得分:5)

当您将参数传递给“.val()” - 即使是空字符串 - 您设置 <input>的值。 获取值为“.val()”(无参数),但只获取第一个匹配元素的值。

总的来说,您可能需要使用“.map()”:

var rateValues = $('input[name*="Rate"]').map(function() {
  return this.value;
});
var qtyValues = $('input[name*="Qty"]').map(function() {
  return this.value;
});

这将为数组提供值和数量。如果您还想要“id”或“name”,您可以返回其他内容:

var rateValues = $('input[name*="Rate"]').map(function() {
  return { value: this.value, name: this.name };
});

然后你会有一个对象数组。

答案 1 :(得分:3)

要检索值,您必须使用.val()(无引号)。您实际上将这些字段的值设置为空字符串。

由于你说这些字段可能不止一对,你必须实际循环搜索结果,检索每对的值,然后计算。现在,您将该val应用于所有匹配的输入。

var rateValues = $('input[name*="Rate"]').val();
var qtyValues = $('input[name*="Qty"]').val(); 
$(rateValues).each(function(i, val) {
     // val is rateValues[i]
     qty = qtyValues[i];
     ... do your calculations
});

答案 2 :(得分:0)

$("#alertButton").live("click", function () {
   var rateValues=new Array();
    var qtyValues=new Array();
        $('input[name*="Rate"]').each(function(){
rateValues.push($(this).val());
   });
        $('input[name*="Qty"]').each(function(){
qtyValues.push($(this).val());
   });

 });

应该为您提供数组和数组的数组