3

必須フィールドバリデーターの後に正規表現バリデーターを使用しましたが、必須フィールドバリデーターが機能していません。

<asp:TextBox ID="txtSummary" runat="server" TextMode="MultiLine" Width="700px"
    CssClass="txtStyle" Font-Names="Arial" MaxLength="1000" 
    ValidationGroup="Valtxt" TabIndex="2" Rows="4">
</asp:TextBox>

<asp:RegularExpressionValidator ID="regValSummary" runat="server"
    ControlToValidate="txtSummary" Display="Dynamic"
    ValidationExpression="[^&lt;&gt;&amp;#!]*" ValidationGroup="Valtxt">
        Invalid characters(&lt;&gt;&amp;#!) are not allowed
</asp:RegularExpressionValidator>

<asp:RequiredFieldValidator ID="reqvalSummary" runat="server"
    ControlToValidate="txtSummary" ErrorMessage="Summary is required"
    ValidationGroup="Valtxt" Display="Dynamic">
</asp:RequiredFieldValidator>

誰もが問題を見ることができますか?

4

4 に答える 4

6

は、クライアント側のイベントRequiredFieldValidatorによってトリガーされます。テキストボックスからタブで移動すると検証が開始されるようonchangeに、イベントによってトリガーされることを期待しているようです。onblur

それにジャンプする前に、これがあなたが見ているものであり、それが実際に機能していることを検証するために、トリガーする必要があると思いますonchange。これを行うには、テキストボックスにテキストを入力し、タブで移動し、タブで戻ってテキストボックスをクリアしてから、もう一度タブで移動します。内容が変更されたため、RequiredFieldValidatorのエラーメッセージが表示されます。

問題に戻りonblurます。onblurこの動作を実現するには、コードビハインドに属性を追加し、ValidatorValidate(...)次のようにJavaScriptメソッドを呼び出すようにします。

void Page_Load(object sender, EventArgs e)
{
    txtSummary.Attributes.Add("onblur", "ValidatorValidate(" + reqvalSummary.ClientID + ")");
}

または、マークアップで同じことを実行することもできます。まず、次のスクリプトブロックを追加します。

<script type="text/javascript">
    function rfvBlur() {
        var rfv = document.getElementById("<%= reqvalSummary.ClientID %>");
        ValidatorValidate(rfv);
    }    
</script>

<asp:TextBox.../>次に、次のように追加してマークアップを更新しonblur="rfvBlur()"ます。

<asp:TextBox ID="txtSummary" runat="server" TextMode="MultiLine" Width="700px" CausesValidation="true"
            CssClass="txtStyle" Font-Names="Arial" MaxLength="1000" ValidationGroup="Valtxt"
            TabIndex="2" Rows="4" onblur="rfvBlur()" />

さらに別のオプションは、マークアップに次の属性を追加してValidationGroup全体を検証することです<asp:TextBox.../>(追加のスクリプトブロックは必要ありません)。

onblur="Page_ClientValidate('Valtxt')"
于 2010-11-01T15:42:46.987 に答える
4

この行をweb.config<appSettings>のセクションに追加すると、うまくいきました(プロジェクトが.NET 4.5にアップグレードされたときに、すべてのバリデーターが機能しなくなったときに問題が発生しました)。

<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />

ソース:

http://forums.asp.net/t/1876231.aspx?ASP+Net+4+5+Validation+Controls+not+working+with+AJAX+ToolkitScriptManager1

于 2014-01-22T21:10:44.293 に答える
1

別のバリデーターを使用する代わりに、「RegEx」バリデーターの正規表現を変更して、テキストボックスが空かどうかを確認してみませんか?

とにかく、おそらく、ポストバックを上げるボタンまたはコントロールにValidationGroup="Valtxt"を指定していません。投稿をページに表示するボタンまたはサーバーコントロールにValidationGroup="Valtxt"を追加するだけです

于 2010-11-01T16:09:11.520 に答える
-1
<asp:TextBox ID="txtSummary" runat="server" TextMode="MultiLine" Width="700px"
    CssClass="txtStyle" Font-Names="Arial" MaxLength="1000" 
    TabIndex="2" Rows="4">
</asp:TextBox>

<asp:RegularExpressionValidator ID="regValSummary" runat="server"
    ControlToValidate="txtSummary" ErrorMessage="Invalid characters(&lt;&gt;&amp;#!) are not allowed" Text="*"
    ValidationExpression="[^&lt;&gt;&amp;#!]*" ValidationGroup="Valtxt">

</asp:RegularExpressionValidator>

<asp:RequiredFieldValidator ID="reqvalSummary" runat="server"
    ControlToValidate="txtSummary" ErrorMessage="Summary is required" Text="*"
    ValidationGroup="Valtxt">
</asp:RequiredFieldValidator>
于 2011-01-06T13:34:45.020 に答える