Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Отрицание содержания выбранного элемента (https://javascript.ru/forum/jquery/16396-otricanie-soderzhaniya-vybrannogo-ehlementa.html)

Telnet 06.04.2011 14:09

Отрицание содержания выбранного элемента
 
В форме регистрации пытаюсь, прикрутить валидацию средствами Javascript. Для краткости сократил ее до 1 строки
<form action="" method="post" name="auth_form" id="auth_form">
 <fieldset><legend>Обязательные поля</legend>
 <table width="525" border="0" cellspacing="5" cellpadding="5">
  <tr>
    <td align="right"><label for="surname">Фамилия*</label></td>
    <td id="td_surname"><input name="surname" type="text" id="surname" size="30" maxlength="20"  value="{$_POST['surname']}"/></td>
  </tr>
</table>
</fieldset>	
 </form>

По валидации вопросов не возникает.
С выводом сообщений по резульатам проверки чуть сложнее,
Не получается сделать так, что сообщение выводилось только один раз, сейчас при каждом событии blur добавляется новая запись об ошибке.
$('#surname').blur(function(){
		var surname = $('#surname').val();
		var msg = surname.search(/[A-Za-zА-Яа-я\d]{3,25}/);
		if(msg==-1){
			$('#td_surname').prepend('<span class="error">В поле фамилия содержиться ошибка</span><br />');
			}
	});

После того как ввести в поле 1 символ, и не сколько раз происходит событие blur имеем следующие
<tr>
<td align="right">
<label for="surname">Фамилия*</label>
</td>
<td id="td_surname">
<br>
<input id="surname" type="text" value="" maxlength="20" size="30" name="surname">
<br>
<span class="error">В поле фамилия содержиться ошибка</span>
<br>
<span class="error">В поле фамилия содержиться ошибка</span>
<span class="error">В поле фамилия содержиться ошибка</span>
</t

Нужно чтоб после добавление 1 сообшения об ошибке новые не добавлялись.

Telnet 06.04.2011 19:47

Все заработало
 
Разобрался САМ.
$('#surname').blur(function(){
		$(this).parent().find('.error').remove();
		var surname = $('#surname').val();
		var msg = surname.search(/[A-Za-zА-Яа-я\d]{3,25}/);
		if(msg==-1){
			$(this).parent().prepend('<span class="error">В поле фамилия содержиться ошибка<br /></span>');
		}

Добавил в начало скрипта

$(this).parent().find('.error').remove();

и перенес в тег span <br />, что б не оставалось пустой строки при удаление элементов.


Часовой пояс GMT +3, время: 21:01.