2012-03-20 64 views
28

我看http://digitalbush.com/projects/masked-input-plugin/jQuery的蒙面輸入插件出錯時,並不清楚場

我打電話這樣說:

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

而且我不希望它扔掉用戶輸入是否有錯誤,例如他們還沒有完成

[407-555-____] 

如果你輸入這麼多之後離開字段,它會清除它。我想離開它,以便稍後完成。

我是jquery的新手,我查看了他的源代碼,但我找不到任何方法來做到這一點,我也找不到任何方式來編輯它來完成我想要的,因爲代碼對我的眼睛是神祕的。

+0

檢查了這一點它可以幫助http://jsfiddle.net/elclanrs/eanS5/ – elclanrs 2012-03-20 21:27:35

+0

@elclanrs我不明白如何,涉及到我對蒙面輸入插件的問題。你的代碼不會做任何掩碼? – McKay 2012-03-20 21:29:55

+0

哦,誤解了這個問題。我以爲你想讓用戶在模糊的時候發出警報,但是看起來你想做相反的權利? – elclanrs 2012-03-20 21:31:12

回答

43

它看起來像我應該只讓整個面罩可選:

mask('?999-999-9999') 

這樣控制的想法的用戶是「有效的」,我可以繼續下去。儘管它不是掩碼的可選部分。

+0

這是否將元素的默認值設置爲0? – 2013-12-19 07:53:33

+0

這是一個字符串掩碼,所以默認值是空字符串。 – McKay 2013-12-20 03:40:38

+0

只是添加...我也遇到了這個問題,並嘗試調整插件與/ /刪除此以保持用戶輸入的文本在字段中,並且不破壞模糊,如果用戶未達到所需的長度 \t \t \t \t //否則如果(lastMatch + 1 2014-02-25 06:14:56

2

您應該刪除checkVal()函數中的語句input.val("");以獲得正確的解決方案。

如果您使用縮小的版本,你應該尋找並刪除聲明:

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

如果我有解決方法,我並不特別喜歡修改二進制文件? – McKay 2012-07-06 15:29:17

+1

嘿戴夫,我不知道這樣做的另一種方式。你能舉個例子嗎? – 2012-07-18 13:57:18

+0

我不會投下來,但幾乎總是修改源代碼是一個非常糟糕的主意。其他人可能會繼續執行項目並將組件升級到新版本,從而丟棄任何未公開的更改。即使你自己也可能會升級它,試圖解釋你幾個月前做過的一些神祕變化。 – FercoCQ 2016-11-09 14:05:19

0

除了去除checkVal(在input.val(「」)),你也可以改變調用clearBuffer 。在原始代碼中是:clearBuffer(0,len);刪除所有用戶輸入。如果您將此更改爲clearBuffer(lastMatch + 1,len),則返回 ;將顯示用戶輸入,然後顯示仍需完成正確輸入的掩碼佔位符。

我還在.bind中添加了一條用戶消息。這適用於我們,因爲我們正在使用MaskedInput來處理一種類型的輸入。我正在檢查任何輸入比位置7更進一步,因爲這是用戶輸入啓動的地方。

這裏是我做過什麼:

.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

添加佔位符可以解決這個問題。

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

在面具上添加一個空的佔位符。見下文

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

默認情況下,它將取代輸入文本字段。所以如果輸入長度是動態的而不是固定的,那麼就會有任何剩餘的。

0

嘗試更新文件jquery.maskedinput.js

在功能功能checkVal(允許)設置參數允許在真實的。它對我的幫助。

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

將autoclear選項設置爲false。

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

看起來這是一個很好的解決方案,這聽起來像是正確的解決方案,但是,唉,我不再在這個項目上工作。 – McKay 2014-02-07 21:39:37

+0

這一個工程.... – Superbiji 2015-05-26 11:14:55

+0

這工作對我來說。謝謝。你節省了我的時間。 – YeeKhin 2015-07-16 02:48:28

-2

尋找unmask方法的pluging腳本。

$('#checkbox').unmask();