1

私を助けてください、私はこれらの問題で数日間立ち往生しています。asp.net で支払いを受ける Web フォームがあり、言語は C# です。

テキストボックスは、ユーザーから通貨金額を受け入れることです。私の要件は、ユーザーがたとえば 75 を入力すると、_TextChanged イベントで 75.00 に切り替わることです。私はこの部分を働かせました。しかし、私のコードは の位置の後の 3 文字をチェックしません。余分なゼロを削除します。私の質問: 1. 入力が小数点以下 2 桁を超える場合、余分なゼロを削除するにはどうすればよいですか? 2. ユーザーがテキストボックスに数字を入力しない場合はどうすればよいですか? 試してみましたが、エラーが発生するか、コード全体が台無しになります。

protected void txtAmount_TextChanged(object sender, EventArgs e)
{

        string textBoxData = txtAmount.Text;

        int textLength = textBoxData.Length;

        int position = txtAmountToPay.Text.IndexOf("."); //Position is the decimal

        if (position == -1)
        {
            textBoxData = textBoxData + ".50"; // when you enter 75 you get 75.50
        }
        if (position == textLength -2 )
        {
            textBoxData = textBoxData + "4"; // when you enter 75.0 you get 75.04
        }
        if (position == textLength -1)
        {
            textBoxData = textBoxData + "30"; // when you enter 75. you get 75.30
        }
        if (position >= textLength - 3) // This part does not work
        {
            textBoxData == textBoxData.Replace(-3);// if user enters 75.0000 it will remove all the other digits after the two 0s after the decimal point
        }


    txtAmount.Text = textBoxData.ToString();
 }
4

2 に答える 2

5

もう 1 つの答えは、サーバー側の検証です。これにクライアント側の検証を使用すると、より最適化されると思います。ポストバックがなくても入力を検証します。このサンプルを見てみてください:

<asp:TextBox id="TextBox1" runat="server" />
<asp:RequiredFieldValidator id="RVF1" runat="server" ControlToValidate="TextBox1"
   ErrorMessage="Required" Display="Dynamic" />
<asp:CompareValidator id="CheckFormat1" runat="server" ControlToValidate="TextBox1" Operator="DataTypeCheck"
   Type="Currency"  Display="Dynamic" ErrorMessage="Illegal format for currency" />
<asp:RangeValidator id="RangeCheck1" runat="server" ControlToValidate="TextBox1"
   Type="Currency" Minimum="1" Maximum="999.99" ErrorMessage="Out of range" Display="Dynamic" />

これにより、テキスト入力が検証されます。

  • 1 つ目:asp:RequiredFieldValidator入力が null または空の場合にチェックします。

  • 2 番目:asp:CompareValidator入力が通貨形式であるかどうかをチェックします。

  • 3番目:asp:RangeValidator値の範囲を検証することです。(バリューシーリングとフローリングに適しています)

ここに簡単なデモがあります。

于 2013-08-02T01:54:41.993 に答える
3

正規表現を使用して XX.XX のパターンを探してみてください。入力が間違っている場合は、ユーザーが入力を修正する必要があります。

private void button1_Click(object sender, EventArgs e)
{
    var pattern = @"^[0-9]*(\.[0-9]{1,2})?$";
    if(Regex.IsMatch(textBox1.Text, pattern))
        MessageBox.Show("Correct Input.");
    else
        MessageBox.Show("Wrong Input!");
}

正規表現

于 2013-08-02T00:49:16.513 に答える