Есть следующий код:
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-методы. Заранее от души благодарю :)))