2012-03-20 26 views
28

Tôi nhìn vào http://digitalbush.com/projects/masked-input-plugin/jquery đầu vào đeo mặt nạ plugin để không rõ ràng trường khi errored

Tôi gọi nó như thế này:

$(control).mask('999-999-9999'); 

Và tôi không muốn nó vứt người dùng nhập vào nếu có điều gì đó sai, ví dụ họ chưa hoàn thành

[407-555-____] 

Nếu bạn rời khỏi trường sau khi đã nhập nhiều, nó sẽ xóa. Tôi muốn rời khỏi nó để họ có thể kết thúc sau.

Tôi mới làm quen với jQuery, và tôi đã xem qua nguồn của anh ấy, nhưng tôi không thể tìm ra cách nào để làm điều đó, tôi cũng không thể tìm cách chỉnh sửa để hoàn thành những gì tôi muốn, vì mã là mắt của tôi.

+0

Check-out này nó có thể giúp http://jsfiddle.net/elclanrs/eanS5/ – elclanrs

+0

@elclanrs tôi không thấy làm thế nào mà gắn liền với câu hỏi của tôi về các plugin đầu vào công ồ ạt. Mã của bạn không làm bất kỳ mặt nạ nào? – McKay

+0

Oh hiểu nhầm câu hỏi. Tôi nghĩ bạn muốn người dùng cảnh báo khi đang làm mờ nhưng có vẻ như bạn muốn làm điều ngược lại? – elclanrs

Trả lời

43

Dường như tôi chỉ nên làm cho toàn bộ mặt nạ tùy chọn:

mask('?999-999-9999') 

Bằng cách đó sự kiểm soát suy nghĩ những gì người dùng có là "hợp lệ" và tôi có thể tiếp tục. Mặc dù nó không thực sự là một phần tùy chọn của mặt nạ.

+0

Điều này có đặt giá trị mặc định của phần tử thành 0 không? –

+0

nó là một mặt nạ chuỗi, do đó, giá trị mặc định là chuỗi rỗng. – McKay

+0

Chỉ cần thêm ... Tôi cũng gặp phải sự cố này và đã cố gắng điều chỉnh plugin bằng // Xóa mục này để giữ cho người dùng nhập văn bản vào trường và không tiêu diệt mờ nếu người dùng không đáp ứng được độ dài yêu cầu \t \t \t \t // else if (lastMatch + 1

2

Bạn nên xóa câu lệnh input.val(""); trong checkVal() để có giải pháp thích hợp.

Nếu bạn đang sử dụng phiên bản rút gọn, bạn nên tìm kiếm và xóa tuyên bố:

if(!a&&c+1<i)f.val(""),t(0,k);else 
+2

Tôi không đặc biệt là người hâm mộ sửa đổi nhị phân, nếu tôi có một công việc xung quanh? – McKay

+1

Xin chào Dave, tôi không có ý tưởng về cách làm theo cách khác. bạn có thể cho tôi một ví dụ được không? –

+0

Tôi sẽ không bỏ phiếu, nhưng hầu như luôn là một ý tưởng tồi để sửa đổi mã nguồn. Người khác có thể tiếp tục de dự án và nâng cấp các thành phần lên phiên bản mới, vứt bỏ bất kỳ thay đổi không có giấy tờ nào. Ngay cả bản thân bạn cũng có thể nâng cấp nó để quên đi một số thay đổi khó hiểu mà bạn đã làm vài tháng trước. – FercoCQ

0

Ngoài tháo input.val ("") trong checkVal(), bạn cũng có thể thay đổi các cuộc gọi đến clearBuffer . Trong mã ban đầu, nó là: clearBuffer (0, len); xóa tất cả đầu vào của người dùng. nếu bạn thay đổi điều này thành clearBuffer (lastMatch + 1, len); đầu vào của người dùng sẽ được hiển thị, tiếp theo là phần giữ chỗ mặt nạ vẫn cần thiết để hoàn thành đầu vào chính xác.

Tôi cũng đã thêm thông báo người dùng vào .bind. Điều này làm việc cho chúng ta, vì chúng ta đang sử dụng MaskedInput cho chính xác một kiểu đầu vào. Tôi đang kiểm tra bất kỳ đầu vào nào đi xa hơn vị trí 7, bởi vì đó là nơi đầu vào của người dùng bắt đầu.

Dưới đây là những gì tôi đã làm:

.bind("blur.mask", function() { 
    // find out at which position the checkVal took place 
    var pos = checkVal(); 
    // if there was no input, ignore 
    if (pos <=7) {input.val(""); clearBuffer(0, len);} 
    // if the user started to input something, which is not complete, issue an alert 
    if (pos > 7 && pos < partialPosition) alert("Tell the user what he needs to do."); 
    if (input.val() != focusText) 
    input.change(); 
}) 
0

Thêm Placeholder có thể giải quyết vấn đề.

$(control).mask('999-999-9999'); 

Thêm người giữ chỗ trống vào mặt nạ. xem bên dưới

$(control).mask('999-999-9999', { placeholder: "" }); 

sẽ thay thế _ trên trường văn bản nhập theo mặc định. do đó, bot sẽ có bất kỳ _ left nào nếu độ dài đầu vào là động và không cố định.

0

tập tin cập nhật Thử jquery.maskedinput.js

Trong function checkVal (cho phép) thiết lập thông số cho phép trên thành sự thật. Nó giúp tôi.

function checkVal(allow) { 
        allow = true; ///add this command 
//.............. 
} 
49

Đặt tùy chọn tự động điền thành sai.

$(control).mask('999-999-9999', {autoclear: false}); 
+4

Điều đó trông giống như một giải pháp tốt, nó có vẻ giống như giải pháp đúng, nhưng than ôi, tôi không làm việc trên dự án đó nữa. – McKay

+0

tác phẩm này hoạt động .... – Superbiji

+0

Tác phẩm này cũng dành cho tôi. Cảm ơn. Bạn tiết kiệm thời gian của tôi. – YeeKhin

-2

Tìm kiếm tập lệnh cắm phương thức hiển thị.

$('#checkbox').unmask(); 
Các vấn đề liên quan