2012-03-20 36 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();