1

以下の正規表現があります。

ValidationExpression="[0-9]+(,[0-9]+)*"

12,2345 または 231,23454 の形式の数値を使用できます。

ここで、コンマを除いて全体で最大 7 桁のみを許可する条件を含めたいと思います。 以下は変更されたコードです

以下はアイテムテンプレートにあります

アイテムテンプレートにもラジオボタンがあります

<asp:TextBox runat="server" ID="tbText" CssClass="someclass" MaxLength="11"
                                          %>'></asp:TextBox>

<asp:RegularExpressionValidator ValidationExpression="[0-9]+(,[0-9]+)*" ID="ValComp" runat="server" CssClass="asdf"
    ControlToValidate="tbMileage" Text="*" Enabled="false" Display="Dynamic"/>

<asp:CustomValidator ID="cvalMileage" runat="server" CssClass="adsf" Text="*" Display="Dynamic">
</asp:CustomValidator>

<asp:CustomValidator ID="CustomValidator1" ClientValidationFunction="functionName" 
    runat="server" CssClass="asd" Text="*" Display="Dynamic">
</asp:CustomValidator>

リピーターの対応するテキストボックスをチェックしたラジオボタンを検証したいので、以下は私が書いたコードです

var selText = $(".Class1 input[type=radio]:checked").closest(".Class1").find(".subClassText input[type=text]").val();
alert('Hi');
if (selText.replace(",", "").length <= 7) {
    args.IsValid = true;
}
else {
    args.IsValid = false;
}

アラートは 2 回発生し、args に基づいて False です。2 回発生するポップアップがあります。

ありがとう。

4

2 に答える 2

2

正規表現はこの問題には適していませんが、入力を最大 1 つのコンマに制限すると、次の式が適合します。

([0-9]{0,0}[,]?[0-9]{0,7})|([0-9]{0,1}[,]?[0-9]{0,6})|([0-9]{0,2}[,]?[0-9]{0,5})|([0-9]{0,3}[,]?[0-9]{0,4})|([0-9]{0,4}[,]?[0-9]{0,3})|([0-9]{0,5}[,]?[0-9]{0,2})|([0-9]{0,6}[,]?[0-9]{0,1})|([0-9]{0,7}[,]?[0-9]{0,0})

この式は最大 7 に固定されているため、この問題は正規表現にはあまり適していないことがわかります。

于 2012-09-22T18:37:47.367 に答える
0

次のように、クライアント側の検証でCustomValidatorコントロールを使用できます。

ASPX コード:

<asp:CustomValidator id="CustomValidator1" runat="server"
           ControlToValidate="YourControlNameHere"
           ClientValidationFunction="ClientValidation"
           OnServerValidate="ServerValidation"
           ErrorMessage="Invalid number." />

JavaScript (jQuery を使用):

function ClientValidation(source, arguments)
{
    var inputText = arguments.Value;
    var expression = /^[0-9]+(,[0-9]+)*$/;
    if (expression.test(inputText) && inputText.replace(",", "").length <= 7) {
        arguments.IsValid = true;
    }
    else {
        arguments.IsValid = false;
    }
}

C# コード ビハインド:

public void ServerValidation(object source, ServerValidateEventArgs args)
{
    string inputText = args.Value;
    Regex regex = new Regex(@"^\d+(,\d+)*$");
    if (regex.IsMatch(inputText) && inputText.Replace(",", "").Length <= 7)
    {
        args.IsValid = true;
    }
    else
    {
        args.IsValid = false;
    }
}
于 2012-09-23T21:50:13.360 に答える