asp.net ページに 2 つのテキスト ボックスと送信ボタンがあります。1つ以上のRequiredFieldValidatorsを使用して、送信ボタンのクリック時に2つのテキストボックスの少なくとも1つにテキストが含まれているかどうかを確認するにはどうすればよいですか?
9982 次
3 に答える
6
2 つのテキスト ボックスと共に、CustomValidator を追加し、サーバー側の検証を呼び出します。
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" OnServerValidate="CustomValidator_ServerValidate"></asp:CustomValidator>
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
サーバーサイド機能
public void CustomValidator_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
{
args.IsValid = true;
if (TextBox1.Text == "" && TextBox2.Text == "")
{
CustomValidator1.ErrorMessage = "Enter value in at least one text Box";
args.IsValid = false;
}
}
これがお役に立てば幸いです。
于 2012-06-28T11:31:59.400 に答える
2
CustomValidator およびクライアント側関数で ClientValidationFunction 属性を使用することもできます
<asp:TextBox ID="txtBoxId1" runat="server"></asp:TextBox>
<asp:TextBox ID="txtBoxId2" runat="server"></asp:TextBox>
<asp:CustomValidator ID="cvId" runat="server" ClientValidationFunction="Validators.DoWork">
error</asp:CustomValidator>
<script language="javascript">
var Validators = {
DoWork: function (source, clientside_arguments) {
var valid_val = true;
//get the controls values using jQuery
var txtBoxId1= $('input:text[id*=txtBoxId1]').val();
var txtBoxId2= $('input:text[id*=txtBoxId2]').val();
if (your condition) {
valid_val = false;
}
clientside_arguments.IsValid = valid_val;
}
}
</script>
于 2012-09-20T11:14:49.260 に答える
0
まず第一に、フィールドが必須でない場合はRequiredFieldValidatorを使用しないでください。代わりにCustomValidatorを使用できます。
RequiredFieldValidator - ユーザーが値を入力したことを確認します。
CustomValidator - 開発者が提供するカスタム検証ロジックに対してフォーム フィールドの値をチェックします。
この引用は、Scott Mitchell による CustomValidator コントロールの使用からのものです。
また、DropDownList の値に基づいて RequiredFieldValidator を動的に有効または無効にすることもできます。これは、RequiredFieldValidator を使用する場合、TextBox の 1 つが有効な場合、2 つのうちの 1 つを動的に無効にする必要があるためです。
于 2012-06-28T10:19:01.820 に答える