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

Javascript jquery在出错时屏蔽输入插件以不清除字段,javascript,jquery,maskedinput,Javascript,Jquery,Maskedinput,我在看电视 我这样称呼它: $(control).mask('999-999-9999'); 我也不希望它在出现问题时丢弃用户的输入,例如,他们还没有完成 [407-555-____] 如果您在输入这么多内容后离开该字段,它会将其清除。我想把它留下,这样他们可以晚些完成 我是jQuery的新手,我已经查看了他的源代码,但我找不到任何方法来实现这一点,也找不到任何方法来编辑它以实现我想要的,因为代码对我来说是神秘的。看起来我应该让整个掩码成为可选的: mask('?999-999-9999')

我在看电视

我这样称呼它:

$(control).mask('999-999-9999');
我也不希望它在出现问题时丢弃用户的输入,例如,他们还没有完成

[407-555-____]
如果您在输入这么多内容后离开该字段,它会将其清除。我想把它留下,这样他们可以晚些完成


我是jQuery的新手,我已经查看了他的源代码,但我找不到任何方法来实现这一点,也找不到任何方法来编辑它以实现我想要的,因为代码对我来说是神秘的。

看起来我应该让整个掩码成为可选的:

mask('?999-999-9999')

这样,控件会认为用户拥有的是“有效的”,我可以继续。即使它实际上不是掩码的可选部分。

您应该删除语句
input.val(“”)checkVal()
函数中输入code>以获得正确的解决方案

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

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

if(!a&&c+1除了删除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();
})
.bind(“blur.mask”,function()){
//找出检查VAL发生的位置
var pos=checkVal();
//如果没有输入,则忽略
if(pos 7&&pos
添加占位符可以解决此问题

$(control).mask('999-999-9999');
在掩码中添加一个空的占位符。请参见下文

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

默认情况下,它将替换输入文本字段中的uu。因此,如果输入长度是动态的且不是固定的,则将不会有任何uuu。请尝试更新文件jquery.maskedinput.js

在函数checkVal(allow)中,将参数allow设置为true。这对我有帮助

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

将自动清除选项设置为false

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

在插件脚本中查找unmask方法

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

看看这个,它可能会有帮助@elclanrs我不知道这与我关于屏蔽输入插件的问题有什么关系。你的代码不做任何屏蔽?哦,误解了这个问题。我以为你想让用户在模糊时发出警报,但你似乎想做相反的事,对吗?我不想在用户离开字段时对输入进行任何更改。很酷,而且[link]view.jqueryui.com/mask/tests/visual/mask/mask.html;完全符合您的需要,但不确定您使用的插件的哪个版本使用了digitalBush查看下面的链接,希望能有所帮助:)如果我有工作的话,我不是特别喜欢修改二进制文件?嘿,Dave,我不知道用另一种方式做这件事。你能给我举个例子吗?我不会投反对票,但修改源代码几乎总是一个非常糟糕的主意。其他人可能会继续取消项目,并将组件升级到新版本,丢弃任何未记录的更改。即使是你自己也可能会忘记几个月前做的一些神秘更改而升级它。这会将元素的默认值设置为0吗?这是一个字符串掩码,所以默认值是空字符串。只需添加。。。我也遇到了这个问题,并尝试使用//Remove this调整插件,以使用户输入的文本保持在字段中,如果用户未达到所需的长度,则不会在模糊时销毁//else if(lastMatch+1