Skrip validasi formulir jQuery sederhana [ditutup]

110

Saya membuat formulir validasi sederhana menggunakan jQuery. Ini bekerja dengan baik. Masalahnya adalah saya tidak puas dengan kode saya. Apakah ada cara lain untuk menulis kode saya dengan hasil keluaran yang sama?

$(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>');
        }       
}   

});
jhedm
sumber
3
ya, Anda dapat menggunakan skrip validasi jquery untuk membuatnya lebih baik.
Devang Rathod
bisa tunjukkan bagaimana caranya? Mereka bilang menulis kode seperti menulis puisi. Saya ingin kode saya dioptimalkan.
jhedm
10
codereview.stackexchange.com - itulah yang Anda cari
Alexander
1
Anda dapat menggunakan validasi formulir HTML5:$('form')[0].checkValidity()
niutech
Jika fokus utamanya adalah kesederhanaan, plugin valijate jquery cukup menjanjikan. itu adalah plugin startup. tetapi, ini menggunakan beberapa cara validasi yang menarik. di sini adalah tautan untuk panduan di sana. valijate.com/Docs.php
bula

Jawaban:

300

Anda cukup menggunakan plugin jQuery Validate sebagai berikut.

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>

DEMO: http://jsfiddle.net/xs5vrrso/

Pilihan: http://jqueryvalidation.org/validate

Metode: http://jqueryvalidation.org/category/plugin/

Aturan Standar : http://jqueryvalidation.org/category/methods/

Aturan Opsional tersedia dengan additional-methods.jsfile :

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
Sparky
sumber
18

Anda dapat menggunakan validator jquery untuk itu tetapi Anda perlu menambahkan file jquery.validate.js dan jquery.form.js untuk itu. setelah menyertakan file validator, tentukan validasi Anda seperti ini.

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

Anda dapat melihat required : true sama ada lebih banyak properti seperti untuk email yang dapat Anda tentukan email : true untuk nomor number : true

Devang Rathod
sumber
3
validator jQuery bagus, tapi menurut saya validator yang mempertimbangkan fitur validasi HTML5 baru bahkan lebih baik, misalnya ericleads.com/h5validate .
Matt Browne
@MattB., Tidak pernah mendengar yang satu itu, tetapi plugin jQuery Validate juga memperhitungkan fitur HTML5 , meskipun saya tidak yakin mengapa Anda perlu / ingin menggunakan keduanya secara bersamaan.
Sparky
1
Devang, jquery.form.jsyang tidak diperlukan untuk menggunakan kode Anda telah menunjukkan.
Sparky
@Sparky Kecuali jika Anda memiliki estetika tertentu yang telah dirancang yang benar-benar Anda sukai untuk pesan validasi, mengizinkan browser yang mendukung HTML5 untuk menampilkan pesan validasi dengan cara default seringkali lebih baik, di mana plugin validasi hanya digunakan sebagai cadangan untuk menampilkan pesan kesalahan di browser lama, dan untuk logika validasi HTML5 tidak mendukung (tanpa Javascript tambahan). Tapi ini adalah preferensi pribadi saya.
Matt Browne
1
@MattB., Biasanya, orang yang menggunakan jQuery mencari konsistensi lintas browser yang Anda dapatkan dengan beralih dari fitur browser yang sangat bervariasi dari satu merek ke merek lainnya. Saya juga lebih suka menggunakan plugin populer yang memiliki basis dukungan besar, dan jika pengembang juga merupakan bagian dari Tim jQuery , lebih baik lagi, IMO.
Sparky