如何使用 JavaScript 设置 gridview 内文本框的格式。 这是我的 gridview 列的样子:
<Columns>
<asp:TemplateField>
<ItemTemplate><asp:ImageButton runat="server" id="imgbtnEnterAmt" ImageUrl="~/Images/bullet_list.png" Width="12px" Height="12px" OnClick="imgbtnEnterAmt_Click" /> </ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="particulars" HeaderText="HOSPITAL CHARGES/ PARTICULARS" />
<asp:TemplateField HeaderText="ACTUAL">
<%--<ItemTemplate><asp:TextBox runat="server" ID="txt_ipamt" OnTextChanged="txt_ipamt_TextChanged" AutoPostBack="true"></asp:TextBox> </ItemTemplate> --%>
<ItemTemplate><input type="text" id="txth_ipamt" onblur="format_amt()" /> </ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="deductions" HeaderText="DEDUCTION/ PHILHEALTH" />
</Columns>
我的 javascript 格式化文本框:
function format_amt()
{
var str_amt = document.getElementById('txth_ipamt').value;
var n = parseFloat(str_amt).toFixed(2);
document.getElementById('txth_ipamt').value = n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
问题是,当我倾向于添加更多行时,只有第一个文本框在 onblur 上格式化,当再次触发 onblur 事件时,文本框再次格式化,导致错误的输出。
最佳答案
更改对 JavaScript 函数的调用以将文本框作为参数传递。您可以使用 this
关键字来执行此操作。
<input type="text" id="txth_ipamt" onblur="format_amt(this)" />
然后在您的函数中,只需使用参数即可。
function format_amt(textbox)
{
var str_amt = textbox.value;
var n = parseFloat(str_amt).toFixed(2);
textbox.value = n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
关于javascript - 使用 JavaScript 设置 gridview 内文本框的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26211737/