2012-01-28 13 views
5

Tôi muốn có một xác nhận Javascript cho phép tối đa là 3 dấu phẩy trong một người sử dụng trường văn bản để nhập số hoặc văn bản ở định dạngjavascript xác nhận để cho phép tối đa là 3 dấu phẩy

123,456,789,0000

nghĩa 3 dấu phẩy (,) được cho phép, có thể có bất kỳ số chữ số/chữ cái nào giữa các dấu phẩy. Người dùng có thể chọn để chỉ nhập 2 dấu phẩy tức là 3 giá trị nhưng số tối đa của Dấu phẩy sẽ được phép là 3 cho ví dụ một, bb, ddddd, eeeee (4 thẻ) một, cc, bbbbb (3 thẻ)

Những gì tôi đang cố gắng đạt được là người dùng chỉ được phép nhập 4 thẻ phân cách bằng dấu phẩy, vì vậy, người dùng không thể tràn ngập bài viết bằng thẻ 100 của

+0

[Bạn đã thử gì cho đến nay ??] (http: // mattgemmell.com/2008/12/08/what-have-you-tried/) –

Trả lời

5
var txt = '123,456,789,0000'; 
if(/^([^,]*,){0,3}[^,]*$/.test(txt)){ 
    // good 
}else{ 
    // bad 
} 

thay đổi các * đến một + nếu bạn muốn đảm bảo rằng không có hai dấu phẩy trong một hàng, ví dụ như: 12,,345

+0

thanx rất nhiều .. nó reaaly đã giúp tôi rất nhiều. –

+0

Xác nhận này hoạt động hoàn toàn tốt, nhưng tôi có nghi ngờ, tôi muốn đảm bảo rằng người dùng không thể nhập nhiều hơn 3 dấu phẩy trong hộp nhập liệu, tức là nếu người dùng đã nhập 3 dấu phẩy, người dùng sẽ không thể nhập dấu phẩy. Tôi hy vọng, tôi đang làm cho bản thân mình rõ ràng. –

+2

Điều này thực hiện điều đó. Đối sánh "Bất kỳ dấu phẩy nào được theo dấu phẩy" 3 lần. Nơi duy nhất một dấu phẩy được cho phép là trong '{0,3}' sẽ không khớp nhiều hơn 3 lần –

0

Nếu bạn có quyền kiểm soát phía máy chủ, tôi khuyên bạn nên thực hiện xác thực ở đó. Nếu bạn cố gắng thực hiện xác nhận trên máy khách bằng cách sử dụng tập lệnh java, nó có thể bị phá vỡ bằng cách tắt cả tập lệnh java, hoặc sử dụng phần mở rộng FireBug của Firefox bằng cách thao tác hoặc thực hiện một yêu cầu, bỏ qua xác thực kịch bản lệnh java của bạn hoàn toàn.

Nhưng nếu bạn thực sự vẫn muốn làm một số loại xác nhận trong javascript, bạn có thể làm một cái gì đó như sau:

Với này trường nhập <input id="txtInput" type="text" />

Bạn có thể ràng buộc một sự kiện KeyUp (chú ý đến người cố gắng dán từ clipboard, KeyUp sẽ không bắt nó nếu họ làm điều đó thông qua menu ngữ cảnh)

$('#txtInput').keyup(function(){ 
    //This splits up the string value of the text box into an array 
    //wherever a coma appears 
    var tags = $(this).val().split(','); 

    //These would be your tags, without the coma, count them to find out how many 
    //the user tried to enter. 
    if (tags.length > 4) 
     alert('there is more than 4 tags'); 
}); 

Tất nhiên đây chỉ là một ví dụ, nhưng bạn có thể thích ứng với ý tưởng yêu cầu của bạn. Bạn không phải ràng buộc điều này với sự kiện keyup, bạn có thể liên kết sự kiện này với sự kiện nhấp chuột vào nút gửi hoặc điều gì đó, tất cả tùy thuộc vào nhu cầu của bạn.

Các vấn đề liên quan