複数行のテキスト ボックスが 1 つ、ボタンが 1 つ、バリデータが 2 つあるフォームがあります。次のマークアップがあります。
<asp:RequiredFieldValidator ID="vldQuestionTextRequired" runat="server" ControlToValidate="tbmQuestionText"
Display="Dynamic"></asp:RequiredFieldValidator>
<asp:CustomValidator ID="vldNotHintText" runat="server" ControlToValidate="tbmQuestionText"
Display="Dynamic" EnableClientScript="true" OnServerValidate="HintText_ServerValidate"
ClientValidationFunction="HintText_ClientValidate"></asp:CustomValidator>
<span class="eq_ad_question_field_bg"> </span>
<asp:TextBox ID="tbmQuestionText" runat="server" CssClass="eq_ad_question_field"
TextMode="MultiLine"></asp:TextBox>
クライアント側の検証 JS は次のようになります。
function HintText_ClientValidate(sender, e)
{
if(e.Value != null)
e.IsValid = e.Value != '<%= InstructionalText %>';
else
e.IsValid = false;
}
元のヒント テキストを変更せずにボタンをクリックすると、正しいバリデータ エラー メッセージが表示され、フォーカスがテキスト ボックスに戻ります。次に、テキストボックスに何かを書き込んでボタンをクリックすると、バリデーターが再評価されて消えますが、ポストバックは発生しません。ボタンをもう一度クリックすると、ポストバックが返されます。
以前にこの動作を見た人はいますか? ありがとうございました!
編集:バリデーターを動的ではなく静的にすると、ボタンが機能することがわかりました。これを回避する方法はありますか?