Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверить, не пустое ли поле (https://javascript.ru/forum/misc/3926-proverit-ne-pustoe-li-pole.html)

Andrej_2 06.06.2009 12:55

Проверить, не пустое ли поле
 
Уважаемые!
Подскажите пожалуйста, что я делаю не так. Нужно проверить поле input, не пустое ли оно и не содержит ли чего, кроме пробельных символов.

Проверяю так:

var reg_pusto = new RegExp('([^\\s*]+)','g');

//[^\s]+  -помимо пробела/ов возможен любой символ/ы

if (reg_pusto.test(znatshenie_polja))
{
window alert ('не пойдет');
}
else
{
window alert ('пойдет');
}


Если в поле ничего нет -- срабатывает. Если несколько пробелов и больше ничего нет -- срабатывает. Если один пробел, и больше ничего нет, пропускает как правильное.

Andrej_2 06.06.2009 13:07

неправильно сформулировал:

Выделить код
var reg_pusto = new RegExp('([^\\s*]+)','g');
 
//[^\s]+  -помимо пробела/ов возможен любой символ/ы
 
if (reg_pusto.test(znatshenie_polja))
{
window alert ('пойдет');
}
else
{
window alert ('не пойдет');
} 

Т.е. надо, чтобы в поле что-то было (пробельные символ(ы) за что-то не принимая)

Octane 06.06.2009 13:18

Цитата:

Сообщение от Andrej_2 (Сообщение 21052)
window alert ('пойдет');

Что это такое, для чего window и через пробел alert?

Чтобы не усложнять регулярное выражение, можно просто удалить все пробельные символы и проверить длину строки:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>…</title>
<script type="text/javascript">
window.onload = function() {
	document.getElementById('button').onclick = function() {
		if(document.getElementById('text').value.replace(/\s+/g, '').length) {
			alert('Текст введён');
		} else {
			alert('Введите текст');
		}
	};
};
</script>
</head>
<body>
	<input id="text" type="text" />
	<input id="button" type="button" value="Проверить" />
</body>
</html>

Andrej_2 06.06.2009 13:47

Спасибо!
Извиняюсь за alert, я не знаток JS, понадеялся на свою память.
Проверка длины -- красиво. Пробую. Мне нужно обязательно в регулярке брать перемнную, а не напрямую из формы.

Пробую с Вашей подсказкой так:

var reg_pusto = znatshenie_polja.replace(/\s+/,'');
if (reg_pusto.length)//длина после удаления всех пробелов
{
alert ('пойдет');
}
else
{
alert ('не пойдет');
}


Все равно та же картина, т.е. тестирует через раз.

Octane 06.06.2009 13:51

Как znatshenie_polja получаете?

Andrej_2 06.06.2009 13:57

Передаю в функцию, потом из этой функции в другую функцию, где и обрабатываю, возвращаю в первую функцию обработанное значение обратно, обрабатываю обработанное значение :) и возвращаю в нужный элемент ID на странице (другое поле)

Octane 06.06.2009 14:01

Цитата:

Сообщение от Andrej_2 (Сообщение 21056)
Передаю в функцию, потом из этой функции в другую функцию, где и обрабатываю, возвращаю в первую функцию обработанное значение обратно, обрабатываю обработанное значение :) и возвращаю в нужный элемент ID на странице (другое поле)

Афигенно информативный ответ

Ищите ошибку, мой пример работает нормально.

Andrej_2 08.06.2009 21:56

Извиняюсь за задержку с ответом, все некогда было. Ощибку нашел. Другая регулярка резала "достижения" предыдущей. Сейчас по совету Octane ориентируюсь на длину. Большое впсибо!


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