使用该函数格式化值并调用如下:
$(".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>
结果如上图所示。
现在,如果我取消函数格式化值,结果如下:
问题是,在格式化值的情况下,所有输入(".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;
答案 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())));
});
注意:假设您已将formatReal
和formatarValor
函数定义为所需行为。
答案 1 :(得分:1)
使用$(".vlrTotal").val(formatReal(formatarValor($(".vlrTotal").val())));
,您为与您的选择器.vlrTotal
匹配的每个元素设置相同的值。
您必须遍历元素列表才能单独更改每个元素。
$(".vlrTotal").each(function(){
$(this).val(formatReal(formatarValor($(this).val())));
});