Подтвердить что ты не робот

Jquery masked входной плагин, чтобы не очистить поле при ошибке

Я смотрю http://digitalbush.com/projects/masked-input-plugin/

Я называю это следующим образом:

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

И я не хочу, чтобы он удалял вход пользователя, если что-то не так, например. они не закончили

[407-555-____]

Если вы оставите поле после его ввода, оно очистит его. Я бы хотел оставить это, чтобы они могли закончить позже.

Я новичок в jQuery, и я просмотрел его источник, но я не могу найти способ сделать это, и не могу найти способ отредактировать его, чтобы выполнить то, что я хочу, потому что код тайно на моих глазах.

4b9b3361

Ответ 1

Похоже, что я должен просто сделать всю маску опцией:

mask('?999-999-9999')

Таким образом, элемент управления считает, что пользователь имеет "действительный", и я могу продолжить. Несмотря на то, что это не действительно дополнительная часть маски.

Ответ 2

Установите для параметра autoclear значение false.

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

Ответ 3

Вы должны удалить оператор input.val(""); в checkVal() для правильного решения.

Если вы используете сокращенную версию, вам следует выполнить поиск и удаление:

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

Ответ 4

В дополнение к удалению input.val("") в checkVal() вы также можете изменить вызов 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();
})

Ответ 5

Добавление Placeholder может решить проблему.

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

Добавьте пустую папку в маску. см. ниже

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

который по умолчанию заменил бы на текстовое поле ввода. так что если бы входная длина была динамической и не фиксированной, то была бы какая-то левая.

Ответ 6

Попробуйте обновить файл jquery.maskedinput.js

В функции function checkVal (разрешить) заданный параметр разрешить true. Его помощь для меня.

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

Ответ 7

Ищите в подключаемый script метод маскирования.

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