国(ドロップダウン)、住所(テキストボックス)、市(テキストボックス)、州のフォームフィールドを持つユーザーコントロールを作成する必要があります(ドロップダウン)、およびZip(テキストボックス)です。 「米国」がドロップダウンリストから選択されている場合にのみ、市、州、および郵便番号を検証する必要があります。 「検証する」とは、長さをチェックすることです。それだけです。"United States"が国として選択されている場合は、市、州、および郵便番号の検証のみ
私はカスタムバリデーターを使用しようとしましたが、一見して動作するはずのコードが何もしていないため、何かが欠けています。例:
function validateLocation(sender, args) {
var country = jQuery("#main_2_MailingAddress_Country").val();
var city = jQuery("#main_2_MailingAddress_City").val();
if (city.Length() > 0)
{
args.IsValid = true;
}
else
{
args.IsValid = country != "United States";
}
}
サーバー側の検証:次に、ここで
<asp:CustomValidator ErrorMessage="City, State, and Zip are required fields"
Display="None" ID="LocationValidator"
runat="server" ClientValidationFunction="validateLocation"
onservervalidate="LocationValidator_ServerValidate">
</asp:CustomValidator>
は私の検証コード
クライアント側の検証であるI場合
protected void LocationValidator_ServerValidate(object source, ServerValidateEventArgs args)
{
if (City.Text.Length > 0)
{
args.IsValid = true;
}
else //nothing was entered for "City"
{
args.IsValid = Country.SelectedValue != "United States";
}
//similar functions for State and Zip go here
}
のみサーバーを実行する検証が行われ、フォーム上に何も記入されていない場合(アドレスフィールドの他に必要なフィールドがある場合)、他のフィールドのRequiredFieldValidatorsが起動します。しかし、都市、州、および郵便番号を除くすべてのフィールドに記入すると(米国の場合はその国が選択されます)、フォームは空でないことを伝えずに送信されます。
カスタムバリデーターに対してクライアント側とサーバー側の両方の検証を指定すると(上の例のように)、バリデーターは起動せず、フォームが送信されます。
これは長くて紛らわしい投稿かもしれませんが、どこに間違っているのか考えていますか?
ポストバック時にPage.Validate()を使用して強制的にページ検証を行うことができます。 –