2010-05-08 27 views
13

Tôi muốn sử dụng plugin xác thực của jQuery để xác nhận một trường chỉ chấp nhận các ký tự chữ cái, nhưng dường như không có quy tắc xác định cho nó. Tôi đã tìm kiếm trên google nhưng tôi thấy không có gì hữu ích.Plugin xác thực jQuery: chỉ chấp nhận các ký tự chữ cái?

Bất kỳ ý tưởng nào?

Đánh giá cao sự trợ giúp của bạn.

Trả lời

69

Nếu bạn bao gồm các tập tin phương pháp bổ sung, đây là tập tin hiện tại cho 1.7: http://ajax.microsoft.com/ajax/jquery.validate/1.7/additional-methods.js

Bạn có thể sử dụng quy tắc lettersonly :) Các phương pháp bổ sung là một phần của zip bạn tải về, bạn luôn có thể tìm thấy mới nhất here .

Dưới đây là một ví dụ:

$("form").validate({ 
    rules: { 
    myField: { lettersonly: true } 
    } 
}); 

Nó đáng chú ý, mỗi phương pháp bổ sung là độc lập, bạn có thể đưa cụ thể đó, chỉ cần đặt này trước khi .validate() cuộc gọi của bạn:

jQuery.validator.addMethod("lettersonly", function(value, element) { 
    return this.optional(element) || /^[a-z]+$/i.test(value); 
}, "Letters only please"); 
+0

^[A-Za-z] + $ cũng chấp nhận các chữ cái viết hoa, hoặc đặt giá trị thành chữ thường với hàm toLowerCase(). –

+0

được bỏ phiếu cho 'this.optional (element) ||' – Pankaj

4

Chỉ cần một nhỏ Ngoài câu trả lời của Nick (hoạt động tuyệt vời!):

Nếu bạn muốn cho phép khoảng cách giữa các chữ cái, ví dụ: bạn có thể hạn chế chỉ nhập các chữ cái trong tên đầy đủ, nhưng nó cũng cho phép không gian - chỉ cần liệt kê khoảng trắng như sau bằng dấu phẩy. Và theo cách tương tự nếu bạn cần phải cho phép bất kỳ nhân vật cụ thể khác:

jQuery.validator.addMethod("lettersonly", function(value, element) 
{ 
return this.optional(element) || /^[a-z," "]+$/i.test(value); 
}, "Letters and spaces only please");  
13

Hãy cẩn thận,

jQuery.validator.addMethod("lettersonly", function(value, element) 
{ 
return this.optional(element) || /^[a-z," "]+$/i.test(value); 
}, "Letters and spaces only please"); 

[az ", "] bằng cách thêm dấu phẩy và dấu ngoặc kép, bạn có cho phép không gian , dấu phẩy và dấu ngoặc kép vào hộp nhập.

Đối với không gian + văn bản, chỉ cần làm điều này:

jQuery.validator.addMethod("lettersonly", function(value, element) 
{ 
return this.optional(element) || /^[a-z ]+$/i.test(value); 
}, "Letters and spaces only please"); 

[a-z] này cho phép không gian là tốt như chỉ văn bản.

.............................................. ..............................

cũng là thông báo "Chỉ thư và không gian vui lòng" là không cần thiết, nếu bạn đã có một thông điệp trong thông điệp:

messages:{ 
     firstname:{ 
     required: "Enter your first name", 
     minlength: jQuery.format("Enter at least (2) characters"), 
     maxlength:jQuery.format("First name too long more than (80) characters"), 
     lettersonly:jQuery.format("letters only mate") 
     }, 

Adam

2

Cả Nick và câu trả lời của Adam làm việc thực sự tốt.

Tôi muốn thêm một lưu ý nếu bạn muốn cho phép ký tự Latin như áç như tôi muốn làm:

jQuery.validator.addMethod('lettersonly', function(value, element) { 
    return this.optional(element) || /^[a-z áãâäàéêëèíîïìóõôöòúûüùçñ]+$/i.test(value); 
}, "Letters and spaces only please"); 
+1

Cảm ơn! nhưng bạn cũng quên - hehe :) – Andres

+0

Cảm ơn, @Andres! Tôi vừa cập nhật câu trả lời của mình và thêm 'ñ' – FlavioEscobar

1

cho phép chữ ans gian

jQuery.validator.addMethod("lettersonly", function(value, element) { 
return this.optional(element) || /^[a-z\s]+$/i.test(value); 
}, "Only alphabetical characters"); 

$('#yourform').validate({ 
     rules: { 
      name_field: { 
       lettersonly: true 
      } 
     } 
    }); 
0
$('.AlphabetsOnly').keypress(function (e) { 
     var regex = new RegExp(/^[a-zA-Z\s]+$/); 
     var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
     if (regex.test(str)) { 
      return true; 
     } 
     else { 
      e.preventDefault(); 
      return false; 
     } 
    }); 
Các vấn đề liên quan