Как частично завершить ввод текста - PullRequest
0 голосов
/ 26 апреля 2011

Я знаю, что название не отражает то, что я пытаюсь спросить, но вот что я пытаюсь сделать:

// желаемый формат: 123-123-1234

Когда пользователь вводит 123 (первые три символа), как я могу добавить дефис - Затем, когда пользователь вводит 123 (вторые три символа), как я могу добавить дефис - снова А затем разрешить пользователю вводить только последние четыре цифры?

У меня есть функция, которая проверяет формат номера телефона США, который я хочу:

/* US Phone # */
'us_phonenumber':function($fld) {
    var v = $fld.val();

    if(v.length == 0) {
        return true;
    }
    return /^\d{3}-\d{3}-\d{4}$/.test(v);
},

Просто любопытно, могу ли я добавить какой-то метод частичного автоматического завершения, все еще проверяя

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

HTML:

<input type="text" />
<br /><a href="#" id="check">Click me!</a>

JS:

$("#check").click(function(){
    var pNum = $("input").val();
    var vNum = pNum.slice(0, 3)+"-"+pNum.slice(3, 6)+"-"+pNum.slice(6, 10);
    $("input").val(vNum);
    return false;
});

Скрипка: http://jsfiddle.net/ueyhE/

Введите свой номер и нажмите «Нажми меня!».

EDIT:

Использование change():

$("input").click(function(){
    var pNum = $(this).val();
    var vNum = pNum.slice(0, 3)+"-"+pNum.slice(3, 6)+"-"+pNum.slice(6, 10);
    $(this).val(vNum);
});
0 голосов
/ 26 апреля 2011

Я не знаю, что делать во время ввода, но после завершения ввода может быть менее запутанным для пользователя или меньше поля для ошибки.

var string = '1234567890';
var formattedString = '';
var index;
for (var i = 0; i < string.length; i++) {
    index = string.charAt(i);   
    (i == 3 || i == 6) ? formattedString = formattedString + '-' + index : formattedString = formattedString + index;
}
alert(formattedString);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...