使用javascript格式化gridview内的文本框

时间:2014-10-06 07:37:42

标签: javascript c# asp.net

如何使用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上格式化,当再次触发onb​​lur事件时,文本框再次被格式化,导致输出错误。

1 个答案:

答案 0 :(得分:1)

将您的调用更改为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, ",");
}