2010-06-24 22 views
10

我有一個屏蔽zip字段的要求,以便它允許傳統的5位數字zip(XXXXX)或5 + 4格式(XXXXX-XXXX)。多種格式的jQuery zip掩碼

我會這麼像:

$('#myZipField').mask("?99999-9999"); 

但併發症來自於一個事實,如果用戶將只有5位數字儀表板不應該顯示。

這是迄今爲止最好的 - 我可以擴展它來自動插入短劃線,當他們插入第6位數字,但問題與這將是有趣的行爲刪除(我可以阻止他們刪除衝但它會修補補丁等等,它變成了一場噩夢):

$.mask.definitions['~']='[-]'; 
$("#myZipField").mask("?99999~9999", {placeholder:""}); 

是否有任何出這樣的盒子的方式還是我不得不推出自己的?

+1

我有同樣的問題,你有沒有曾經想出一個合適的解決方案?謝謝! – 2012-01-11 15:56:12

+1

@BenL。不是真的 - 我最終分裂了多個文本框中的字段 – JohnIdol 2012-11-14 16:34:25

+0

這可能有所幫助:https://igorescobar.github.io/jQuery-Mask-Plugin/ – 2017-06-22 15:59:37

回答

9

你不必使用不同的插件。只是移動的問號,使代替:

$('#myZipField').mask("?99999-9999"); 

你應該使用:

$('#myZipField').mask("99999?-9999"); 

畢竟,這是不是整個字符串是可選的,只是-從不間斷。

-1

爲什麼不讓這個字段透明,並且在它後面有一個文本對象,其格式爲淺灰色?所以他們在背景中看到####### - ####,然後使用它來使字母消失。在那一點上,它表明如果他們想要多出四個,他們應該輸入一個破折號,對吧?那麼,你可以使用腳本來自動插入連字符,如果他們搞砸和6型數字?

0

這郵政編碼其實很簡單,但是當你有處理更復雜的格式,這裏是它是如何與插件(從demo page)解決:

var options = {onKeyPress: function(cep, e, field, options){ 
    var masks = ['00000-000', '0-00-00-00']; 
    mask = (cep.length>7) ? masks[1] : masks[0]; 
    $('.crazy_cep').mask(mask, options); 
}}; 

$('.crazy_cep').mask('00000-000', options);