Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Модернизация JS кода
 
 автор: sega_z   (04.04.2012 в 13:35)   письмо автору
 
 

Всем доброго дня!

Очень плохо разбираюсь в JS, а хотелось бы усовершенствовать рабочий код проверки заполнения полей формы таким образом, чтобы дополнительно выводилось уведомление о минимальном количестве символов. Например, "количество символов в строке должно быть не менее 10!"

Вот рабочий JS код:


// JavaScript Document
function checkform(f) {
var errMSG = ""; 
// цикл ниже перебирает все элементы в объекте f, 
// переданном в качестве параметра
// функции, в данном случае - наша форма.            
for (var i = 0; i<f.elements.length; i++) 
// если текущий элемент имеет атрибут required
// т.е. обязательный для заполнения
if (null!=f.elements[i].getAttribute("required")) 
// проверяем, заполнен ли он в форме
if (isEmpty(f.elements[i].value)) // пустой
errMSG += "  " + f.elements[i].name + "\n"; // формируем сообщение
// об ошибке, перечисляя 
// незаполненные поля
// если сообщение об ошибке не пусто,
// выводим его, и возвращаем false     
if ("" != errMSG) {
alert("Необходимо заполнить обязательные поля!\n");
return false;
}
}
function isEmpty(str) {
for (var i = 0; i < str.length; i++)
if (" " != str.charAt(i))
return false;
return true;
}

  Ответить  
 
 автор: confirm   (04.04.2012 в 13:57)   письмо автору
 
   для: sega_z   (04.04.2012 в 13:35)
 

Это к php отношения не имеет.
А вам не кажется, что у вас аргументы места перепутали?
Проверять текущий символ на пустоту нет смысла, лучше перед проверкой обрезать пробелы, а затем проверить длину строки, меньше она 10 или нет. Для всего этого будет достаточно одного цикла, без вызова isEmpty.

  Ответить  
 
 автор: sega_z   (04.04.2012 в 14:24)   письмо автору
 
   для: confirm   (04.04.2012 в 13:57)
 

Спасибо за ответ!
Ну я так и не понял, что нужно поменять в коде, чтобы символов не было меньше 10.

  Ответить  
 
 автор: confirm   (04.04.2012 в 14:33)   письмо автору
 
   для: sega_z   (04.04.2012 в 14:24)
 

Первое, вами написанное выглядит примерно так:

есть дувушки А и Б, есть женские имена Марина и Наташа, при этом вы знаете, что у девушки А должно быть имя Марина, а у второй Наташа. Но вместо того, чтобы задать естественный вопрос девушкам - "Девушка, вас зовут Марина (Наташа)?", вы спрашиваете у имен - "Марина, ты принадлежишь девушке А?".

Ну разве это не абсурдно?

Получая текущий элемент в цикле (а это значение поля), вырезайте в нем пробелы (тут я не знаю, разрешены у вас пробелы внутри или нет, но судя по вызову функции нет), и присваиваете этот результат значению этого поля, а также проверяете после этого длину строки. Вот и все. Для того чтобы понять, пример:
var s = '  ab   sd  ';
s = s.replace(/\s/g, '');
alert(s+"\n"+s.length)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования