Задать вопрос
@parkito

Как найти элемент Dom через переменную?

Здравствуйте. Помогите, пожалуйста, понять почему не работает следующий код.

$(document).ready(function () {
    //Email validation
    $('#email').on('input', function () {
        emailValidation('email');
    });

 function emailValidation(fieldName) {
        var input = $('#' + fieldName).val();  //почему данное выражение не валидно
        var re = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+[a-z]*$/;
        var is_email = re.test(input);
        setBorderStyle(is_email, fieldName)
    }


Однако получаю

Uncaught Error: Syntax error, unrecognized expression: #[object HTMLInputElement]
    at Function.ga.error (jquery.min.js:2)
    at ga.tokenize (jquery.min.js:2)
    at ga.select (jquery.min.js:2)
    at Function.ga [as find] (jquery.min.js:2)
    at r.fn.init.find (jquery.min.js:2)
    at r.fn.init (jquery.min.js:2)
    at r (jquery.min.js:2)
    at emailValidation (validator.js:41)
    at HTMLInputElement.<anonymous> (validator.js:4)
    at HTMLInputElement.dispatch (jquery.min.js:3)


При вводе в поле я попадаю в

$('#email').on('input', function ()

После падаю на $('#' + fieldName).val();.

Что можно предпринять в этой ситуации?
  • Вопрос задан
  • 379 просмотров
Подписаться 1 Простой 10 комментариев
Решения вопроса 1
Stalker_RED
@Stalker_RED
Можно вообще убрать этот лишний поиск в DOM
$(document).ready(function () {
    $('#email').on('input', function () {
        emailValidation(this.value);
    });

 function emailValidation(email) {
        // your regexp stuff here
        ...
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@abberati
frontend-разработчик
Всё ж работает, в чём проблема?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы