Jquery masked входной плагин, чтобы не очистить поле при ошибке
Я смотрю http://digitalbush.com/projects/masked-input-plugin/
Я называю это следующим образом:
$(control).mask('999-999-9999');
И я не хочу, чтобы он удалял вход пользователя, если что-то не так, например. они не закончили
[407-555-____]
Если вы оставите поле после его ввода, оно очистит его. Я бы хотел оставить это, чтобы они могли закончить позже.
Я новичок в jQuery, и я просмотрел его источник, но я не могу найти способ сделать это, и не могу найти способ отредактировать его, чтобы выполнить то, что я хочу, потому что код тайно на моих глазах.
Ответы
Ответ 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();