単純なjQueryフォーム検証スクリプト[終了]


110

jQueryを使用して簡単な検証フォームを作成しました。それは大丈夫です。問題は、自分のコードに満足していないことです。同じ出力結果でコードを書く別の方法はありますか?

$(document).ready(function(){

$('.submit').click(function(){
    validateForm();   
});

function validateForm(){

    var nameReg = /^[A-Za-z]+$/;
    var numberReg =  /^[0-9]+$/;
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

    var names = $('#nameInput').val();
    var company = $('#companyInput').val();
    var email = $('#emailInput').val();
    var telephone = $('#telInput').val();
    var message = $('#messageInput').val();

    var inputVal = new Array(names, company, email, telephone, message);

    var inputMessage = new Array("name", "company", "email address", "telephone number", "message");

     $('.error').hide();

        if(inputVal[0] == ""){
            $('#nameLabel').after('<span class="error"> Please enter your ' + inputMessage[0] + '</span>');
        } 
        else if(!nameReg.test(names)){
            $('#nameLabel').after('<span class="error"> Letters only</span>');
        }

        if(inputVal[1] == ""){
            $('#companyLabel').after('<span class="error"> Please enter your ' + inputMessage[1] + '</span>');
        }

        if(inputVal[2] == ""){
            $('#emailLabel').after('<span class="error"> Please enter your ' + inputMessage[2] + '</span>');
        } 
        else if(!emailReg.test(email)){
            $('#emailLabel').after('<span class="error"> Please enter a valid email address</span>');
        }

        if(inputVal[3] == ""){
            $('#telephoneLabel').after('<span class="error"> Please enter your ' + inputMessage[3] + '</span>');
        } 
        else if(!numberReg.test(telephone)){
            $('#telephoneLabel').after('<span class="error"> Numbers only</span>');
        }

        if(inputVal[4] == ""){
            $('#messageLabel').after('<span class="error"> Please enter your ' + inputMessage[4] + '</span>');
        }       
}   

});

3
はい、jquery検証スクリプトを使用して、より良いものにすることができます。
Devang Rathod 2013

どうやって見せてもらえますか?彼らは、コードを書くことは詩を書くことに似ていると言います。コードを最適化したい。
jhedm 2013

10
codereview.stackexchange.com –それはあなたが探しているものです
Alexander

1
あなたは、HTML5フォーム検証を使用することができます$('form')[0].checkValidity()
niutech

主な焦点が単純さである場合、valijate jqueryプラグインは有望です。スタートアッププラグインです。しかし、それはいくつかの興味深い検証方法を使用しています。こちらがガイドのリンクです。valijate.com/Docs.php
bula

回答:


300

次のように、jQuery Validateプラグインを使用するだけです。

jQuery

$(document).ready(function () {

    $('#myform').validate({ // initialize the plugin
        rules: {
            field1: {
                required: true,
                email: true
            },
            field2: {
                required: true,
                minlength: 5
            }
        }
    });

});

HTML

<form id="myform">
    <input type="text" name="field1" />
    <input type="text" name="field2" />
    <input type="submit" />
</form>

デモ:http : //jsfiddle.net/xs5vrrso/

オプション: http : //jqueryvalidation.org/validate

メソッド: http : //jqueryvalidation.org/category/plugin/

標準規則http : //jqueryvalidation.org/category/methods/

additional-methods.jsファイルで利用可能なオプションのルール

maxWords
minWords
rangeWords
letterswithbasicpunc
alphanumeric
lettersonly
nowhitespace
ziprange
zipcodeUS
integer
vinUS
dateITA
dateNL
time
time12h
phoneUS
phoneUK
mobileUK
phonesUK
postcodeUK
strippedminlength
email2 (optional TLD)
url2 (optional TLD)
creditcardtypes
ipv4
ipv6
pattern
require_from_group
skip_or_fill_minimum
accept
extension

18

そのためにjqueryバリデーターを使用できますが、そのためにはjquery.validate.jsおよびjquery.form.jsファイルを追加する必要があります。バリデータファイルをインクルードした後、次のように検証を定義します。

<script type="text/javascript">
$(document).ready(function(){
    $("#formID").validate({
    rules :{
        "data[User][name]" : {
            required : true
        }
    },
    messages :{
        "data[User][name]" : {
            required : 'Enter username'
        }
    }
    });
});
</script>

あなたは見ることができますrequired : true あなたが定義することができ、電子メールのためのような、より多くのプロパティがあり、同じemail : true 番号のために number : true


3
jQueryバリデーターは優れていますが、新しいHTML5検証機能を考慮に入れるバリデーターは、ericleads.com / h5validateなど、さらに優れていると思います。
Matt Browne 2013

@MattB。、これについて聞いたことはありませんが、jQuery ValidateプラグインはHTML5機能も考慮に入れますが、なぜ両方を同時に使用する必要があるのか​​わからないのです。
Sparky

1
デバン、表示したコードを使用する必要jquery.form.jsはありません
Sparky、2013

@Sparky検証メッセージに本当に気に入っている特定の美観を既に持っている場合を除き、HTML5をサポートするブラウザーが検証メッセージをデフォルトの方法で表示できるようにすると、多くの場合、検証プラグインがエラーメッセージを表示するためのフォールバックとしてのみ使用されます。古いブラウザ、および検証ロジックではHTML5はサポートしていません(追加のJavaScriptなし)。しかし、これは私の個人的な好みです。
Matt Browne 2013

1
@MattB。、通常、jQueryを使用する人々は、ブランドごとに大きく異なるブラウザー機能から離れることによって得られるブラウザー間の一貫性を探しています。私はまた、サポートの巨大な基盤を持つ人気のあるプラグインを使い続けることを好みます。開発者もjQueryチームの一員である場合、さらに良いのはIMOです。
Sparky 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.