2015-04-30 3 views
0

enter image description hereФормат значения «не работает»

Использование функции для форматирования значения и вызова, как это:

$(".vlrTotal").val(formatReal(formatarValor($(".vlrTotal").val()))); 

Мой Html:

<td> 
    <input readonly type="text" name="vlrTotal[]" value="<?php echo $item['VwEstPedOnlineItens']['vlr_custo_total']; ?>" class="vlrTotal" style="width: 100%;"/> 
</td> 

И результаты этого изображения выше

Теперь, если я снимаю функцию для форматирования значения, результатом является следующее: enter image description here

Проблема заключается в том, со значением отформатированного, все входы (".vlrTotal") показывает ту же самую величину (первый), но когда я проверить элемент, значение показывает правильное значение. Если я сниму функцию для форматирования значения, она «работает».

Я не знаю, что делать дальше.

PS: console.log:

input.vlrTotal значение свойства = "7.199,28" значение атрибута = "2799,72"

input.vlrTotal значение свойства = "7.199,28" атрибут value = "2399.76"

ответ

2

Поскольку у вас есть несколько элементов с $(".vlrTotal"), вам необходимо выполнить итерацию и установить значение для каждого элемента. Когда вы получаете доступ к методу .val(), он получает значение первого элемента, как вы это пережили.

Вы должны использовать .val(function)

функцию, возвращающую значение для установки. это текущий элемент. Получает индексную позицию элемента в наборе и старое значение в качестве аргументов.

Использование

$(".vlrTotal").val(function(_, value){ 
    return formatReal(formatarValor(value)); 
}); 

ИЛИ, простой $.fn.each()

$(".vlrTotal").each(function(){ 
    $(this).val(formatReal(formatarValor($(this).val()))); 
}); 

Примечание: Если предположить, что вы определили formatReal и formatarValor функцию с желаемым поведением.

+0

С уважением, looooot! Это сработало ! Ты восхитителен. –

+0

НО, он форматирует только первый результат, не все из них. –

1

С помощью $(".vlrTotal").val(formatReal(formatarValor($(".vlrTotal").val()))); вы устанавливаете одинаковое значение для каждого элемента, соответствующего вашему селектору .vlrTotal.

Вам необходимо выполнить итерацию по списку элементов, чтобы изменить каждый элемент отдельно.

$(".vlrTotal").each(function(){ 
    $(this).val(formatReal(formatarValor($(this).val()))); 
}); 
+0

Это сработало! НО, он форматирует только первый результат, не все из них. –

+0

Извините!Исправлен код, был ошибка, хотя, хотя он форматировал каждое поле, он использовал значение первого поля. Используя '$ (this)', поскольку вы итерации через каждый элемент вы ссылаетесь на текущий элемент –

Смежные вопросы