jquery屏蔽输入插件,以便在出错时不清除字段

时间:2012-03-20 21:20:34

标签: javascript jquery maskedinput

我正在查看http://digitalbush.com/projects/masked-input-plugin/

我这样称呼它:

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

如果出现问题,我不希望它丢弃用户输入,例如他们还没有完成

[407-555-____]

如果你在键入这么多之后离开了这个领域,它就会清除它。我想留下它以便以后完成。

我是jQuery的新手,我已经浏览了他的来源,但我找不到任何方法可以做到这一点,我也找不到任何方法来编辑它来实现我想要的,因为代码是我的眼睛是奥术。

7 个答案:

答案 0 :(得分:52)

将autoclear选项设置为false。

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

答案 1 :(得分:45)

看起来我应该让整个面具可选:

mask('?999-999-9999')

这样控件认为用户拥有的是“有效”,我可以继续。即使它不是面具的可选部分。

答案 2 :(得分:2)

您应该删除input.val("");函数中的语句checkVal()以获得正确的解决方案。

如果您使用的是缩小版,则应搜索并删除声明:

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

答案 3 :(得分: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();
})

答案 4 :(得分:0)

添加占位符可以解决问题。

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

将空的占位符添加到面具中。见下文

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

默认情况下会替换输入文本字段中的_。所以如果输入长度是动态的并且不是固定的,那么就会有任何_左。

答案 5 :(得分:0)

尝试更新文件jquery.maskedinput.js

在函数函数中checkVal(允许)设置参数allow on true。对我有帮助。

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

答案 6 :(得分:-2)

在插件脚本中寻找unmask方法。

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