jQuery маскируется плагин ввода, чтобы не очистить поле при ошибке
Я смотрю на http://digitalbush.com/projects/masked-input-plugin/
Я называю это так:
$(control).mask('999-999-9999');
и я не хочу, чтобы он выбрасывал ввод пользователей, если что-то не так, например, они не закончили
[407-555-____]
Если вы покидаете поле после того, как набрали это много, он очищает его. Я хочу оставить его, чтобы они могли закончить позже.
Я новичок в jQuery, и я просмотрел его источник, но я не могу найти способ сделать это, и я не могу найти способ отредактировать его, чтобы выполнить то, что я хочу, потому что код тайный для моих глаз.
7 ответов
установите для параметра autoclear значение false.
$(control).mask('999-999-9999', {autoclear: false});
похоже, я должен просто сделать всю маску необязательной:
mask('?999-999-9999')
таким образом, элемент управления считает, что пользователь имеет "допустимый", и я могу продолжить. Хотя это не совсем необязательная часть маски.
в дополнение к удалению ввода.val ("") в checkVal () вы также можете изменить вызов на clearBuffer. В исходном коде это: clearBuffer (0, len); удаление всего пользовательского ввода. если вы измените это на clearBuffer (lastMatch + 1, len); пользовательский ввод будет отображаться, а затем заполнители маски, которые все еще необходимы для завершения правильного ввода.
Я также добавил сообщение пользователя в.связывать. Это работает для нас, так как мы используем 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();
})
добавление заполнителя может решить проблему.
$(control).mask('999-999-9999');
добавьте пустой держатель места в маску. смотрите ниже
$(control).mask('999-999-9999', { placeholder: "" });
который заменит _ в текстовом поле ввода по умолчанию. таким образом, бот будет любым _ left, если входная длина динамическая и не фиксированная.
попробуйте обновить файл jquery.maskedinput.js
в функции функция checkVal (allow) установить параметр allow on true. Это поможет мне.
function checkVal(allow) {
allow = true; ///add this command
//..............
}