-1

maskedinput プラグインを使用すると、このような必須の電話番号フィールドを持つフォームがあります

(999) 999-9999

これを検証するために、jquery 検証でリテラルを無視するようにします。また、フォームが送信される前にリテラルを削除したいと考えています。しかし、検証エラーが発生した場合でも、maskedinput プラグインを有効にして、フォーマットがユーザーにとって正しいように見えるようにします。

検証のために正規表現を編集できると思いますが、フォームが送信されると、リテラルはまだそこにあります。

これをもっとよく説明する必要があることを教えてください。

何か案は?私はjqueryにかなり慣れていないので、詳細なソリューションはすべて素晴らしいでしょう。

私のJavaScriptコードはこれです

$(document).ready(function(){


    jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, ""); 
    return this.optional(element) || phone_number.length > 9 &&
    phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
    }, "US Phone Number Required");


    $("#valform").validate({
    invalidHandler: function(form, validator) {
        var errors = validator.numberOfInvalids();

        if (errors) {
            $("#error-message").show().text("Please correct the required field(s)");
        } else {
            $("#error-message").hide();
        }
    },
    messages: {
        phone: {
            required: ""
        }
    },
    rules: {
        phone: {
            required: true,
            phoneUS: true
        },

        },
     });



    $("#phone").mask("(999) 999-9999",{placeholder:"  "});


    });
4

1 に答える 1

1

jsを使用してフォームを送信する前に、他の文字を削除できます

このコードは、禁止された文字が入力されるとすぐに入力から削除します。

入力フィールドのクラスは「数字」です。これにより、「keyup」イベントがその入力フィールドにバインドされ、「handleInputKeyUp」という関数が呼び出されます

 $(".numbers").bind("keyup", handleInputKeyUp);

関数:

function handleInputKeyUp(e){    

    var temp = e.currentTarget.value;
                temp = temp.replace(/[^\d-]/g, "");
                e.currentTarget.value = temp;
    }

このコードは、数字と - 以外のすべてを入力フィールドから削除します。

于 2012-08-13T07:30:22.237 に答える