Синтаксис JQuery, с .val ("");(возвращающий массив) - PullRequest
3 голосов
/ 25 ноября 2011

Я совершенно новичок в Jquery, поэтому я немного запутался в том, как я могу выполнить то, что описано ниже ...

Что я пытаюсь сделать:

  1. Поиск по всей странице для ввода текстовых полей, которые имеют слово Rate, а затем снова для количества.

  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">

Ответы [ 3 ]

5 голосов
/ 25 ноября 2011

Когда вы передаете аргумент ".val ()" & mdash; даже пустая строка & mdash; Вы установите значение <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 };
});

Тогда у вас будет массив объектов.

3 голосов
/ 25 ноября 2011

Чтобы получить значение, вы должны использовать .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
});
0 голосов
/ 25 ноября 2011
$("#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());
   });

 });

должен получить массив ставок и кол-во

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...