0

jQuery で動作するカスタム バリデータを取得する際に問題が発生しています。

テキストボックスにPO BOXが含まれているかどうかを確認するために作成した関数を次に示します。

function valPoBox(sender, args) {
    var hasPObox = "^P\.?\s?O\.?\sB[Oo][Xx].";
    var StreetAddress = $('.streetaddress').val();
    var match = StreetAddress.match(RegExp(hasPObox));
    if (!match) {
        args.IsValid = false;
        sender.ErrorMessage = "Address must not contain P.O. Box";
        $('.valPoBox').attr("ErrorMessage", sender.ErrorMessage);
    }
    else {
        args.IsValid = true;
    }
}

テキストボックスからタブで移動すると関数が起動し、ロジックに従って args.IsValid = false; に入ります。ただし、エラー メッセージは表示されません。

私が間違っていることはありますか?

4

1 に答える 1

0

あなたが持っている最後の行$('.valPoBox').attr("ErrorMessage", sender.ErrorMessage);は、実際には有効なコードではありません。このattr関数は、要素に HTML 属性を設定します。あなたがやりたいと思っているのは、入力の後にテキストを追加し、検証に失敗したらそれをユーザーに表示することです。

たとえば、次のようなものがあります。

<input class="streetaddress" /><span id="PoBoxError"></span>

JS は次のようになります。

    ...
    $('#PoBoxError').html(sender.ErrorMessage);
} else {
    args.IsValid = true;
    $('#PoBoxError').html('');
}

これにより、入力後にスパンが設定され、エラー メッセージが表示され、検証に合格すると再び非表示になります。これは、これを実現する方法の 1 つにすぎません。他の方法には、コンテンツの表示と非表示が含まれますが、元のコードにできるだけ近い答えを作成しようとしました。

于 2013-02-11T16:14:31.883 に答える