@Kadekomst36467432

Как проверить значение формы на jQuery, если используется $(this)?

Есть следующий код:
HTML:
<form action="" method="post" class="col-12 no-padding">
        <h3 class="col-6 mb-4 form-label">Write about your question :)</h3>
        <div class="main-inputs col-5">
          <span class="name-spoiler"></span>
          <input type="text" name="name" class="input" placeholder="Your Name">
          <span class="email-spoiler"></span>
          <input type="text" name="email" class="input" placeholder="Your Email">
          <span class="subject-spoiler"></span>
          <input type="text" name="subject" class="input" placeholder="Your Subject">
        </div>
        <div class="textarea col-5">
          <span class="textarea-spoiler"></span>
          <textarea name="subject_details" id="textarea" cols="30" rows="10" class="col-12 our-team-input" placeholder="Details of Your Subject"></textarea>
        </div>
        <div class="submit col-2">
          <input type="submit" class="btn btn-primary" value="Send Message" />
        </div>
      </form>

JS ( jQuery ):
$('input').on('input', function() {
    if ( $(this).attr('name') === 'name' ) {
        if ( $(this).val().length <= 2) {
            $('.name-spoiler').text('Your name must contain at least 3 letters!').css('color', 'red');
        } else {
            $('.name-spoiler').text('Your name is correct!').css('color', 'green');
        }
    }
    if ( $(this).attr('name') === 'email' ) {
        if ( !$(this + ':contains("@")') ) {
            $('.email-spoiler').text('Your email must contain "@" character!').css('color', 'red');
        } else {
            $('.email-spoiler').text('Your email is correct!').css('color', 'green');
        }
    }
});


Загвоздка в том, что приходится использовать :contains() в купе с $(this), а jQuery считает это как трабл, т.е это противоречит его структуре. Насчет indexOf(): он не работает с jQuery-функциями типа $(this).text() и тп. Как проверить $(this).text() или $(this) на содержание символа, к примеру "@" для валидации почты? Можно и регулярные выражения, но желательнее jQuery-методы. Заранее от души благодарю :)))
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
@kttotto
пофиг на чем писать
indexOf(): он не работает с jQuery-функциями типа $(this).text()

Странные вещи Вы говорите, все работает. Но в вашем случае надо не text брать, а value.
if($(this).val().indexOf("@") > 0) { ... }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы