格式化值"不起作用'

时间:2015-04-30 13:37:48

标签: javascript jquery

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")都显示相同的值(第一个),但是当我检查元素时,该值显示正确的值。如果我取消函数来格式化值,它就会起作用&#34;。

我不知道该怎么做。

PS:Console.log:

  

input.vlrTotal属性值=&#34; 7.199,28&#34;属性值=&#34; 2799.72&#34;

     

input.vlrTotal属性值=&#34; 7.199,28&#34;属性值=&#34; 2399.76&#34;

2 个答案:

答案 0 :(得分:2)

由于您有多个$(".vlrTotal")元素,因此需要迭代并为每个元素设置值。当您访问.val()方法时,它会在您遇到的情况下获取第一个元素的值。

您需要使用.val( function )

  

将值返回到set的函数。这是当前的元素。接收集合中元素的索引位置和旧值作为参数。

使用

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

,简单$.fn.each()

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

注意:假设您已将formatRealformatarValor函数定义为所需行为。

答案 1 :(得分:1)

使用$(".vlrTotal").val(formatReal(formatarValor($(".vlrTotal").val())));,您为与您的选择器.vlrTotal匹配的每个元素设置相同的值。

您必须遍历元素列表才能单独更改每个元素。

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