CĂN BẢN
DOM & BOM
XỨ LÝ FORM
JAVASCRIPT TIPS
TUTORIALS
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Một số hàm validate dữ liệu bằng Javascript

Việc sử dụng Javascript để kiểm tra dữ liệu của form đóng vai trò khá quan trọng trong các ứng dụng website bởi vì nó giúp website hoạt động nhanh và thân thiện với người dùng hơn. Tuy nhiên vì Javascript chỉ hoạt động ở Client nên dễ dàng bị người dùng qua mặt, vì vậy đối với những dữ liệu quan trọng bạn nên lọc nó để tránh các lỗi SQL Injection và XSS, đồng thời bạn nên vaildate nó thêm một lần nữa tại Server.

Và sau đây là danh sách một số hàm Javascript validate data mà bạn nên sưu tầm lại để sử dụng.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Kiểm tra định dạng Email bằng Javascript

Để kiểm tra định dạng Email thì bạn phải sử dụng kết hợp với biểu thức chính quy Regular Expression. Hàm này hơi dài dòng nhưng mình thấy sử dụng ổn định nên bạn hãy sưu tầm lại nó nhé.

 

function isEmail(emailStr) 
    {
            var emailPat=/^(.+)@(.+)$/
            var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
            var validChars="\[^\\s" + specialChars + "\]"
            var quotedUser="(\"[^\"]*\")"
            var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
            var atom=validChars + '+'
            var word="(" + atom + "|" + quotedUser + ")"
            var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
            var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
            var matchArray=emailStr.match(emailPat)
            if (matchArray==null) {
                    return false
            }
            var user=matchArray[1]
            var domain=matchArray[2]

            // See if "user" is valid
            if (user.match(userPat)==null) {
                return false
            }
            var IPArray=domain.match(ipDomainPat)
            if (IPArray!=null) {
                // this is an IP address
                      for (var i=1;i<=4;i++) {
                        if (IPArray[i]>255) {
                            return false
                        }
                }
                return true
            }
            var domainArray=domain.match(domainPat)
            if (domainArray==null) {
                return false
            }

            var atomPat=new RegExp(atom,"g")
            var domArr=domain.match(atomPat)
            var len=domArr.length

            if (domArr[domArr.length-1].length<2 ||
                domArr[domArr.length-1].length>3) {
               return false
            }

            // Make sure there's a host name preceding the domain.
            if (len<2) 
            {
               return false
            }

            // If we've gotten this far, everything's valid!
            return true;
    }

 

Cách sử dụng:

 

var str = 'thehalfheart@gmail.com';
var if (isEmail(str)){
    alert('Email hợp lệ');
}

 

2. Kiểm tra định dạng URL bằng Javascript

Kiểm tra định dạng URL chính là kiểm tra định dạng địa chỉ website nên nó phải bắt đầu bằng http hoặc https, tiếp sau đó là tuân theo quy luật của domain như: không có khoảng trắng, ...

 

function isURL(url){
        if (url == ""|| url == null)
                return false;

        url = trim(url);

        if (url.indexOf(" ")!=-1)
                return false;

        var RegExp = /^http(s)?:\/\/[\w|\-]+(\.[^\.]+)+$/i;

        if(RegExp.test(url)){
                return true;
        }else{
                return false;
        }
}

 

Cách sử dụng:

 

if (isURL('https://freetuts.net')){
    alert('Domain này đúng rồi');
}

 

3. Kiểm tra slug của tiêu đề bài viết

Slug chính là phần bỏ khoảng trắng và ký tự có dấu đi và thay vào đó là dấu gạch ngang (-) và các ký tự không dâu, vì vậy để kiểm tra nó là chỉ cần tuân theo hai quy tắc đó.

 

function isSlug(val){
    var reg = /^[a-z0-9-_]+$/;
    return reg.test(val);
}

 

Cách sử dụng:

 

if (isSlug('hoc-lap-trinh-tai-freetuts-net')){
    alert('Đúng định dạng slug');
}

 

4. Hàm trong PHP chuyển thành Javascript

Sau đây là một số hàm có sẵn trong PHP nhưng không có sẵn trong Javascript, vì vậy để sử dụng được trong Javascript thì bắt buộc ta phải xây dựng nó.

Hàm empty

Hàm này dùng kiểm tra dữ liệu có tồn tài hoặc bằng rỗng hoặc null hay không. Và sau đây là đoạn code trong Javascript.

 

function isEmpty(str)
{
    str = str || null;
    return (typeof str == "undefined" || str == null);
}

 

Hàm is_array

Hàm is_array trong PHP dùng kiểm tra một biến có phải được lưu trữ một mảng hay không.

 

function isArray(object)
{
    if (object.constructor === Array) 
            return true;    
    else return false;
}

 

Hàm in_arrray

Hàm in_array trong PHP dùng kiểm tra một giá trị nào đó có xuất hiện trong mảng hay không.

 

function inArray(needle, haystack)
{
    var i = haystack.length;
    while (i >= 0) 
    {
        if (haystack[i] === needle) 
        {
            return true;
        }
        i--;
    }
    return false;
}

 

Trong đó:

  • needle là giá trị cần kiểm tra
  • haystack là mảng cần kiểm tra

Ngoài ra bạn có thể tự viết thêm các hàm khác một cách dễ dàng nếu sử dụng thành thạo biểu thức Regular Expression và kiến thức Javascript căn bản.

5. Kiểm tra định dạng ngày tháng bằng Javascript

Để kiểm tra định dạng ngày tháng đúng thì rất là phức tạp, tuy nhiên mình có sưu tầm được một hàm khá hay và hiện tại mình cũng đang sử dụng nó.

 

function isValidDate(dateStr, format)
{
    if (format == null){
        format = "MDY";
    }
    format = format.toUpperCase();
    if (format.length != 3) {
        format = "MDY";
    }
    if ( (format.indexOf("M") == -1) || (format.indexOf("D") == -1) ||
        (format.indexOf("Y") == -1) ) {
        format = "MDY";
    }
    if (format.substring(0, 1) == "Y") { // If the year is first
        var reg1 = /^\d{2}(\-|\/)\d{1,2}\1\d{1,2}$/
        var reg2 = /^\d{4}(\-|\/)\d{1,2}\1\d{1,2}$/
    } else if (format.substring(1, 2) == "Y") { // If the year is second
        var reg1 = /^\d{1,2}(\-|\/)\d{2}\1\d{1,2}$/
        var reg2 = /^\d{1,2}(\-|\/)\d{4}\1\d{1,2}$/
    } else { // The year must be third
        // Tan :: Start : if 'd-m-Y' is invalid format (only remove -)
        var reg1 = /^\d{1,2}(\/)\d{1,2}\1\d{2}$/
        var reg2 = /^\d{1,2}(\/)\d{1,2}\1\d{4}$/
    // Tan :: End
    }

    // If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
    if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) {
        return false;
    }
    var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
    // Check to see if the 3 parts end up making a valid date
    if (format.substring(0, 1) == "M") 
    {
        var mm = parts[0];
    } 
    else if (format.substring(1, 2) == "M") 
    {
        var mm = parts[1];
    } 
    else 
    {
        var mm = parts[2];
    }
    if (format.substring(0, 1) == "D") {
        var dd = parts[0];
    } 
    else if (format.substring(1, 2) == "D") 
    {
        var dd = parts[1];
    } 
    else 
    {
        var dd = parts[2];
    }

    if (format.substring(0, 1) == "Y") 
    {
        var yy = parts[0];
    } 
    else
    if (format.substring(1, 2) == "Y") 
    {
        var yy = parts[1];
    } 
    else 
    {
        var yy = parts[2];
    }
    if (parseFloat(yy) <= 50) 
    {
        yy = (parseFloat(yy) + 2000).toString();
    }
    if (parseFloat(yy) <= 99) 
    {
        yy = (parseFloat(yy) + 1900).toString();
    }
    var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
    if (parseFloat(dd) != dt.getDate()) 
    {
        return false;
    }
    if (parseFloat(mm)-1 != dt.getMonth()) 
    {
        return false;
    }

    return true;
}

 

Trong đó:

  • dateStr là giá trị cần kiểm tra 
  • format là định dạng ngày tháng cần kiểm tra (MDY hoặc DMY)

6. Chuyển đổi Title thành Slug

Hàm này mình có giới thiệu ở bài tạo slug tự động bằng Javascript rồi nhưng mình cũng mạn phép đăng lên đây cho đủ bộ.

 

function to_slug(str, saperator)
{
    saperator = saperator || '-';
    str = str.toLowerCase();     
    str = str.replace(/[^a-zA-Z0-9\sàáạảãâầấậẩẫăằắặẳẵèéẹẻẽêềếệểễìíịỉĩòóọỏõôồốộổỗơờớợởỡùúụủũưừứựửữỳýỵỷỹđ]/g, '');
    str = trim(str);
    str = str.replace(/(à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ)/g, 'a');
    str = str.replace(/(è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ)/g, 'e');
    str = str.replace(/(ì|í|ị|ỉ|ĩ)/g, 'i');
    str = str.replace(/(ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ)/g, 'o');
    str = str.replace(/(ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ)/g, 'u');
    str = str.replace(/(ỳ|ý|ỵ|ỷ|ỹ)/g, 'y');
    str = str.replace(/(đ)/g, 'd');
    str = str.replace(/ /g, '-');
    str = str.replace(/(-+)/g, saperator);
    return str;
}

 

7. Lời kết

Như vậy là mình đã giới thiệu xong một số hàm được viết bằng javascript dùng để kiểm tra định dạng dữ liệu. Ngoài các hàm trên nếu ban thành thao Javascript thì sẽ dễ dàng tự viết lấy tùy vào yêu cầu cụ thể của từng bài toán.

Hy vọng qua bài này sẽ giúp các bạn có cảm hứng với Javascript, cuối cùng chúc bạn học tốt nhé.

Cùng chuyên mục:

Cách gộp hai object javascript lại với nhau

Cách gộp hai object javascript lại với nhau

Cách lấy chiều dài của object trong Javascript

Cách lấy chiều dài của object trong Javascript

Hướng dẫn giải phương trình bậc 1 bằng Javascript

Hướng dẫn giải phương trình bậc 1 bằng Javascript

Cách dùng nextSibling trong javascript

Cách dùng nextSibling trong javascript

Cách dùng insertAdjacentHTML trong javascript

Cách dùng insertAdjacentHTML trong javascript

Cách dùng innerHTML trong Javascript

Cách dùng innerHTML trong Javascript

Cách dùng insertBefore trong javascript

Cách dùng insertBefore trong javascript

Cách dùng insertAfter trong Javascript

Cách dùng insertAfter trong Javascript

Cách dùng parentNode trong Javascript

Cách dùng parentNode trong Javascript

Cách dùng parentElement trong Javascript

Cách dùng parentElement trong Javascript

Tính tổng các phần tử trong mảng javascript

Tính tổng các phần tử trong mảng javascript

Tính tổng hai số bằng Javascript (cộng hai số)

Tính tổng hai số bằng Javascript (cộng hai số)

Cách gán giá trị cho thẻ input trong javascript

Cách gán giá trị cho thẻ input trong javascript

Để gán giá trị cho thẻ input thì ta có hai cách, thứ nhất là…

Cách kiểm tra số nguyên âm trong javascript

Cách kiểm tra số nguyên âm trong javascript

Cách kiểm tra số nguyên dương trong javascript

Cách kiểm tra số nguyên dương trong javascript

Hàm closure trong javascript

Hàm closure trong javascript

Closure là một khái niệm không phải ai cũng ..

Biểu thức chính quy RegEx trong Javascript

Biểu thức chính quy RegEx trong Javascript

Bài này chúng ta sẽ tìm hiểu đến chuỗi và cách sử dụng biểu thức…

Cách dùng Import / Export Module trong javascript

Cách dùng Import / Export Module trong javascript

Khi bạn xây dựng một ứng dụng nhỏ thì việc đặt

Cơ chế hoạt động của hoisting trong Javascript

Cơ chế hoạt động của hoisting trong Javascript

Hoisting là vấn đề liên quan đến cách khai báo biến trong Javascript. Nó liên…

Cấp độ private / protected của class trong Javascript

Cấp độ private / protected của class trong Javascript

Top