สคริปต์ตรวจสอบความถูกต้องของฟอร์ม 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

คุณช่วยแสดงวิธีการ พวกเขากล่าวว่าการเขียนโค้ดก็เหมือนกับการเขียนบทกวี ฉันต้องการให้โค้ดของฉันดีที่สุด
jhedm

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

19

คุณสามารถใช้โปรแกรมตรวจสอบ jquery ได้ แต่คุณต้องเพิ่มไฟล์ jquery.validate.js และ jquery.form.js หลังจากรวมไฟล์ validator แล้วจะกำหนดการตรวจสอบความถูกต้องของคุณเช่นนี้

<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

@MattB. ไม่เคยได้ยินมาก่อน แต่ปลั๊กอิน jQuery Validate ยังคำนึงถึงคุณลักษณะของ HTML5แม้ว่าฉันจะไม่แน่ใจว่าทำไมคุณถึงต้องการ / ต้องการใช้ทั้งสองอย่างร่วมกัน
Sparky

1
Devang, jquery.form.jsจะไม่จำเป็นต้องใช้รหัสที่คุณได้แสดง
Sparky

@Sparky เว้นแต่คุณจะมีสุนทรียะเฉพาะที่ออกแบบมาแล้วซึ่งคุณชอบสำหรับข้อความการตรวจสอบความถูกต้องการอนุญาตให้เบราว์เซอร์ที่รองรับ HTML5 แสดงข้อความการตรวจสอบความถูกต้องตามค่าเริ่มต้นมักจะดีกว่าโดยที่ปลั๊กอินการตรวจสอบจะถูกใช้เป็นทางเลือกสำหรับการแสดงข้อความแสดงข้อผิดพลาดเท่านั้น บนเบราว์เซอร์รุ่นเก่าและสำหรับตรรกะการตรวจสอบ HTML5 ไม่รองรับ (หากไม่มี Javascript เพิ่มเติม) แต่นี่เป็นความชอบส่วนตัวของฉันมากพอ ๆ กับอะไรก็ได้
Matt Browne

1
@MattB โดยทั่วไปแล้วผู้คนที่ใช้ jQuery กำลังมองหาความสอดคล้องระหว่างเบราว์เซอร์ที่คุณได้รับจากการย้ายออกจากคุณลักษณะของเบราว์เซอร์ซึ่งแตกต่างกันอย่างมากในแต่ละแบรนด์ ฉันชอบที่จะยึดติดกับปลั๊กอินยอดนิยมที่มีฐานการสนับสนุนจำนวนมากและหากนักพัฒนาเป็นส่วนหนึ่งของทีม jQueryด้วยก็ยิ่งดี IMO
Sparky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.