Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2009, 12:14   #1
Kasiopeya
 
Регистрация: 08.05.2009
Сообщений: 9
По умолчанию Проверка поля формы на JavaScript

В форме существует поле "Имя":

Имя<font color=red>*</font>: <input type="text" name="lname"><p>

его проверку осуществляем на корректность заполнения:

n_lname = document.forms[0].lname.value.toString();
if(n_lname != "") {
if(n_lname.length<3 || n_lname.length>20) {
alert ("Укажите ваше имя (3-20 символов)!");
document.forms[0].lname.focus();
return false;
}
} else {
alert("Необходимо ввести имя!");
document.forms[0].lname.focus();
return false;
}

как в этот код добавить еще и проверку на то, что первая буква в имени должна быть заглавной?
И второй вопрос: почему у меня курсор все таки не устанавливается в ошибочно заполненное поле?
Kasiopeya вне форума Ответить с цитированием
Старый 08.05.2009, 12:47   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
как в этот код добавить еще и проверку на то, что первая буква в имени должна быть заглавной?
PHP код:
n_lname document.forms[0].lname.value.toString();
if(
n_lname != "")
 {
 if(
n_lname.length<|| n_lname.length>20)
  {
  
alert ("Укажите ваше имя (3-20 символов)!");
  
document.forms[0].lname.focus();
  return 
false;
  }
  
n_lname.charCodeAt(0);
 if(!(
k>=65&&k<=90))
  {
   
alert("Первая буква должна быть заглавной!");
   
document.forms[0].lname.focus();
   return 
false;
  }
} else {
alert("Необходимо ввести имя!");
document.forms[0].lname.focus();
return 
false;

Цитата:
И второй вопрос: почему у меня курсор все таки не устанавливается в ошибочно заполненное поле?
У меня ставится.. (Опера)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 08.05.2009 в 12:52.
Sazary вне форума Ответить с цитированием
Старый 08.05.2009, 14:17   #3
Kasiopeya
 
Регистрация: 08.05.2009
Сообщений: 9
По умолчанию

Дело в том, что как я понимаю:

k = n_lname.charCodeAt(0);
if(!(k>=65&&k<=90))

действительно только для английского алфавита или я не права? а если мне необходимо, чтобы проверялись и английский и русский?
Kasiopeya вне форума Ответить с цитированием
Старый 08.05.2009, 14:23   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
действительно только для английского алфавита или я не права?
Да, все так. Исправьте так:
Код:
if(!(k>=65&&k<=90)&&!(k>=1040&&k<=1071))
У меня работает.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 08.05.2009, 14:23   #5
cronfy
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 92
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Код HTML:
 if(!(k>=65&&k<=90))
  {
   alert("Первая буква должна быть заглавной!");
   document.forms[0].lname.focus();
   return false;
  }
}
А имена у нас только английские, да?

Я бы сделал так:

Код HTML:
<script type="text/javascript">
  function isUcfirst(str) {
    str += '';
    upper = str.charAt(0).toUpperCase();
    original = str.charAt(0);

    return upper == original;
  }
</script>
Ф-я isUcfirst() возвращает true, если первая буква заглавная и false, если нет.

Перед проверкой нужно убрать возможные пробелы в начале строки. Поищите реализацию ф-ии trim() на javascript, их много.

Можно ещё пойти навстречу пользователю и не заставлять его перебивать первую букву самостоятельно, а сделать автозамену.
SPRINTHOST.RU — вот, что я люблю ;-)
cronfy вне форума Ответить с цитированием
Старый 08.05.2009, 14:41   #6
Kasiopeya
 
Регистрация: 08.05.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Да, все так. Исправьте так:
Код:
if(!(k>=65&&k<=90)&&!(k>=1040&&k<=1071))
У меня работает.
А в FF работать не хочет, вообще прекращает выполнение скрипта когда этот кусочек ставлю
Kasiopeya вне форума Ответить с цитированием
Старый 08.05.2009, 14:49   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
А в FF работать не хочет, вообще прекращает выполнение скрипта когда этот кусочек ставлю
Что значит прекращает работу? А вы все правильно вставляете?

Вообще, лучше используйте вариант, предложенный cronfy. Так будет лучше.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 08.05.2009, 14:57   #8
Kasiopeya
 
Регистрация: 08.05.2009
Сообщений: 9
По умолчанию

Это значит, что у меня вообще прекращают появляться окошки Alert даже если я данные ввожу в форму неверно или оставляю поле пустым.
Надеюсь, что правильно.
Kasiopeya вне форума Ответить с цитированием
Старый 08.05.2009, 15:03   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Надеюсь, что правильно.
Только вот это не дает мне никакой реальной информации. Я думал, что вы мне скопируете код сюда.

Еще раз: используйте вариант cronfy. Это намного удобнее.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 08.05.2009, 15:03   #10
Kasiopeya
 
Регистрация: 08.05.2009
Сообщений: 9
По умолчанию

[QUOTE=Sazary;258640]Что значит прекращает работу? А вы все правильно вставляете?

Таки нашла ошибку. Теперь работает как должен. Спасибо.
Kasiopeya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод десятичных дробей в поля textbox формы NikolayGVB Microsoft Office Word 9 26.04.2009 04:55
Как переменной присвоить данные из текстового поля формы? kitten2 Microsoft Office Excel 2 08.04.2009 05:43
Проверка формы на валидность RegExps Jensi PHP 5 14.03.2009 14:00
проверка полей формы AIst PHP 3 10.09.2008 02:59