Определить первый символ в текстовом поле с помощью Jquery - PullRequest
2 голосов
/ 10 декабря 2011

Я хотел бы знать, как сделать следующее с Jquery:

У меня есть 1 текстовое поле в форме. Когда первый символ является числом, измените имя атрибута этого поля на «число». Если первым символом является буква, измените это имя атрибута на «буква».

!! Это также должно работать, когда число или текст вставляется в поле.

Спасибо! Йерун

Ответы [ 2 ]

6 голосов
/ 10 декабря 2011

Привязать (некоторые) события к текстовому полю. Событие keyup используется для обновления атрибута name, когда пользователь изменяет текст (включая ярлык CTRL+V copy- вставка),
события paste и mousemove используются для вставки копии (перетаскивание, контекстное меню).

$("#your-input").bind("keyup paste mousemove", function() {
    var char = this.value.charAt(0);     // Use vanilla JavaScript to get the
                                         // first character of the text field
    if (/[0-9]/.test(char)) {            // Test against a pattern: digit
        $(this).attr("name ", "number");
    } else if (/[a-zA-Z]/.test(char)) {  // Else, pattern: letters
        $(this).attr("name", "letter");
    } else {                             // Finally, no name?
        $(this).attr("name", "");
    }
});

Удалите else {...} и замените else if(/[a-zA-Z]/.test(char)) { на else {, если хотите, чтобы именем по умолчанию было letter.

2 голосов
/ 10 декабря 2011

Примерно так:

$("#yourformid").submit(function(){
   var input = $("#yourinputid"),
       val = input.val();
   input.attr("name", /^\d/.test(val) ? "number" :
                      /^[A-Z]/i.test(val) ? "letter" : "");
});

Сложно обрабатывать вставку во всех браузерах, но если вы просто установите атрибут при отправке формы, вы будете защищены независимо от действий пользователя, включая перетаскивание.N'Drop изменения в поле.(Очевидно, я предполагаю, что не имеет значения, что это за атрибут перед отправкой.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...