Một kịch bản xác thực biểu mẫu jQuery đơn giản [đã đóng]


110

Tôi đã tạo một biểu mẫu xác nhận đơn giản bằng jQuery. Nó hoạt động ổn. Vấn đề là tôi không hài lòng với mã của mình. Có cách nào khác để viết mã của tôi với cùng một kết quả đầu ra không?

$(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
có, bạn có thể sử dụng tập lệnh xác thực jquery để làm cho nó tốt hơn.
Devang Rathod

bạn có thể chỉ cho tôi làm thế nào? Họ nói rằng viết mã giống như viết một bài thơ. Tôi muốn mã của mình được tối ưu hóa.
jhedm

10
codereview.stackexchange.com - đó là những gì bạn đang tìm kiếm
Alexander

1
Bạn có thể sử dụng xác thực biểu mẫu HTML5:$('form')[0].checkValidity()
niutech 22/04/16

nếu trọng tâm chính là sự đơn giản, thì plugin valijate jquery rất hứa hẹn. nó là một plugin khởi động. nhưng, nó sử dụng một số cách xác nhận thú vị. đây là liên kết cho hướng dẫn đó. valijate.com/Docs.php
bula

Câu trả lời:


300

Bạn chỉ cần sử dụng plugin jQuery Validate như sau.

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/

Tùy chọn: http://jqueryvalidation.org/validate

Phương pháp: http://jqueryvalidation.org/category/plugin/

Quy tắc Chuẩn : http://jqueryvalidation.org/category/methods/

Các quy tắc tùy chọn có sẵn với additional-methods.jstệp :

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

bạn có thể sử dụng trình xác thực jquery cho việc đó nhưng bạn cần thêm tệp jquery.validate.js và jquery.form.js cho việc đó. sau khi bao gồm tệp trình xác thực, hãy xác định xác thực của bạn giống như thế này.

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

Bạn có thể thấy required : true tương tự, có nhiều thuộc tính khác như email mà bạn có thể xác định email : true cho số number : true


3
Trình xác thực jQuery là tốt, nhưng tôi nghĩ rằng trình xác thực có tính đến các tính năng xác thực HTML5 mới thậm chí còn tốt hơn, ví dụ: ericleads.com/h5validate .
Matt Browne

@MattB., Chưa bao giờ nghe nói về điều đó, nhưng plugin jQuery Validate cũng tính đến các tính năng HTML5 , mặc dù tôi không chắc tại sao bạn cần / muốn sử dụng cả hai cùng nhau.
Sparky

1
Devang, jquery.form.jskhông cần thiết để sử dụng mã bạn đã được hiển thị.
Sparky

@Sparky Trừ khi bạn có một thẩm mỹ cụ thể đã được thiết kế sẵn mà bạn thực sự thích cho các thông báo xác thực, việc cho phép trình duyệt hỗ trợ HTML5 hiển thị thông báo xác thực theo cách mặc định thường đẹp hơn, trong đó plugin xác thực chỉ được sử dụng như một dự phòng để hiển thị thông báo lỗi trên các trình duyệt cũ hơn và đối với logic xác thực, HTML5 không hỗ trợ (không có thêm Javascript). Nhưng đây là sở thích cá nhân của tôi như bất cứ điều gì.
Matt Browne

1
@MattB., Thông thường, những người sử dụng jQuery đang tìm kiếm sự nhất quán trên nhiều trình duyệt mà bạn nhận được bằng cách loại bỏ các tính năng của trình duyệt vốn rất khác nhau giữa các thương hiệu. Tôi cũng thích gắn bó với các plugin phổ biến có nền tảng hỗ trợ lớn và nếu nhà phát triển cũng là một phần của Nhóm jQuery , thì càng tốt, IMO.
Sparky
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.