【问题标题】:JQuery Syntax, with .val(""); (returning array)JQuery 语法,带有 .val(""); (返回数组)
【发布时间】:2011-11-24 21:39:24
【问题描述】:

我对 Jquery 还是很陌生,所以对于如何执行下面描述的操作我有点困惑......

我想做的事:

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

  2. 做一个计算,总和(比率 * 数量)

  3. 将结果呈现给用户。

我做了什么

  1. 因为行是动态添加的,所以元素名称中有 GUID,所以我搜索它们。

我需要帮助的地方

我可以使用 .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">

【问题讨论】:

    标签: javascript jquery arrays syntax


    【解决方案1】:

    当你将参数传递给“.val()”时——即使是空字符串——你设置&lt;input&gt;的值。您get 使用“.val()”(无参数)的值,但这只会获得 first 匹配元素的值。

    总体而言,您可能想要的是使用“.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 };
    });
    

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

    【讨论】:

    • 感谢 Pointy,地图正是我想要的,我不知道它是如何工作的,但它正是我所追求的
    • 您需要包含.get(),以便它只返回您要求的那些值。否则它会返回其他与 jQuery 相关的数组值。所以像这样:$('selector').map(function(){}).get()
    【解决方案2】:

    要检索一个值,您必须使用.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
    });
    

    【讨论】:

    • 谢谢 Marc.B 我使用 map 函数加上你的 .each 样本来遍历数组。你的样本帮助很大。谢谢
    【解决方案3】:
    $("#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());
       });
    
     });
    

    应该让你得到一系列的费率和数量的数组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-06
      • 2016-12-01
      • 2011-09-10
      • 2012-06-05
      • 2012-05-16
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多