jquery masked input plugin to not clear field when

2019-02-05 13:42发布

I'm looking at the http://digitalbush.com/projects/masked-input-plugin/

I'm calling it like this:

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

And I don't want it to throw away the users input if something is wrong, e.g. they haven't finished

[407-555-____]

If you leave the field after having typed this much, it clears it. I'd like to leave it so they can finish later.

I'm new to jQuery, and I've looked through his source, but I can't find any way to do that, nor can I find any way to edit it to accomplish what I want, because the code is arcane to my eyes.

7条回答
走好不送
2楼-- · 2019-02-05 13:54

Adding Placeholder could solve the problem.

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

Add an empty place holder into mask. see below

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

which would replace _ on the input text field by default. so there would bot be any _ left if the input length is dynamic and not fixed.

查看更多
等我变得足够好
3楼-- · 2019-02-05 14:00

You should delete statement input.val(""); in checkVal() function for a proper solution.

If you're using minified version, you should search and delete statement:

if(!a&&c+1<i)f.val(""),t(0,k);else
查看更多
Luminary・发光体
4楼-- · 2019-02-05 14:00

Try update file jquery.maskedinput.js

In function function checkVal(allow) set parameter allow on true. Its help for me.

 function checkVal(allow) {
                    allow = true; ///add this command
//..............
}
查看更多
Emotional °昔
5楼-- · 2019-02-05 14:06

Looking for into the pluging script the unmask method.

$('#checkbox').unmask();
查看更多
神经病院院长
6楼-- · 2019-02-05 14:07

Set autoclear option to false.

$(control).mask('999-999-9999', {autoclear: false});
查看更多
甜甜的少女心
7楼-- · 2019-02-05 14:11

In addition to removing the input.val("") in checkVal() you can also change the call to clearBuffer. In the original code it is: clearBuffer(0, len); removing all user input. if you change this to clearBuffer(lastMatch + 1, len); the user input will be displayed, followed by the mask placeholders that are still needed to complete correct input.

I have also added a user message in the .bind. This works for us, as we are using the MaskedInput for exactly one type of input. I'm checking for any input going further than position 7, because that's where the user input starts.

Here is what I did:

.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();
})
查看更多
登录 后发表回答