Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2009, 19:27
Интересующийся
Отправить личное сообщение для boris2000 Посмотреть профиль Найти все сообщения от boris2000
 
Регистрация: 25.11.2009
Сообщений: 22

как сделать проверку полей на js
есть скрипт для проверки полей на правильность заполнения формы и выдачи пользователю предупреждения если что не так. скрипт не работает, помогите.

// объявлю массивы
fieldnames_array = new Array("authorf", "authorio", "authorcity", "authorcountry", "authorindex", "authorstreet", "authorinstitution", "authoremail");
fielddescription_array = new Array("authoraddress", "authorio", "authorcity", "authorcountry", "authorindex", "authorstreet", "authorinstitution", "authoremail");

// функция проверки поля - не пустое ли оно
function textOK(e) { return (e.value != "") ? true : false; } 

// функция провеки всего масссива полей и выдачи сообщения пользователю
function checkSomeFields(f){
	var msg;
	for(j=0; j<=fieldnames_array.length; j++) {
		if(!textOK(f.fieldnames_array[j])){
			msg = msg + "\n\r" + fielddescription_array[j];
		}
	}
alert (msg);
return true;
}


и в самой форме прописываю
<form action="/gbd/add_new_datasource.php" method="post" onSubmit="return checkSomeFields(this);">
Ответить с цитированием
  #2 (permalink)  
Старый 26.11.2009, 20:57
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от boris2000
// функция проверки поля - не пустое ли оно
function textOK(e) { return (e.value != "") ? true : false; }
Boolean-значение, которое получается в результате операции сравнения, вам не нравится?
function textOK(e) { return e.value != ""; }


Ошибка, наверное, здесь:
Сообщение от boris2000
f.fieldnames_array[j]
вы неправильно формируете аксессор.
f[fieldnames_array[j]]


Массивы лучше объявлять так:
// объявлю массивы
var fieldnames_array = ["authorf", "authorio", "authorcity", …, "authoremail"];
Ответить с цитированием
  #3 (permalink)  
Старый 26.11.2009, 23:36
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Octane
Массивы лучше объявлять так:
Чем же конструктор не угодил?
Ответить с цитированием
  #4 (permalink)  
Старый 27.11.2009, 01:20
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от B~Vladi
Чем же конструктор не угодил?
Хотя бы потому, что так меньше писать, ну и так в MDC рекомендуют из-за возможности создать массив заданной длины, передав в конструктор один числовой аргумент:
Сообщение от MDC: JavaScript style guide
Цитата:
Use [value1, value2] to create a JavaScript array in preference to using new Array(value1, value2) which can be confusing, as new Array(length) will actually create a physically empty array with the given logical length, while [value] will always create a 1-element array. You cannot actually guarantee to be able to preallocate memory for an array.
Ответить с цитированием
  #5 (permalink)  
Старый 27.11.2009, 11:27
Интересующийся
Отправить личное сообщение для boris2000 Посмотреть профиль Найти все сообщения от boris2000
 
Регистрация: 25.11.2009
Сообщений: 22

исправил, дополнил, упрочил - все равно не работает!

форма теперь имеет имя
<form action="/gbd/add_new_datasource.php" method="post" name="frm" onSubmit="return checkSomeFields(this);">

// объявлю массивы
var fieldnames_array = ["authorf", "authorio", "authorcity", "authorcountry", "authorindex", "authorstreet", "authorinstitution", "authoremail"];
var fielddescription_array = ["authoraddress", "authorio", "authorcity", "authorcountry", "authorindex", "authorstreet", "authorinstitution", "authoremail"];

// функция провеки всего масссива полей и выдачи сообщения пользователю
function checkSomeFields(){
	var msg;
	for(j=0; j<=fieldnames_array.length; j++) {
		if(document.frm.fieldnames_array[j].value !="")){
			msg = msg + "\n\r" + fielddescription_array[j];
		}
	}
alert (msg);
return true;
}
Ответить с цитированием
  #6 (permalink)  
Старый 27.11.2009, 14:57
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от boris2000
document.frm.fieldnames_array[j].
Читайте внимательнее по ссылке про аксессоры.
Ответить с цитированием
  #7 (permalink)  
Старый 27.11.2009, 15:42
Интересующийся
Отправить личное сообщение для boris2000 Посмотреть профиль Найти все сообщения от boris2000
 
Регистрация: 25.11.2009
Сообщений: 22

спасибо, исправил на document.frm[fieldnames_array[j]].value
но НЕ РАБОТАЕТ! увы!
почитал в сети, посмотрел всякие примеры - вроде должно работать, ан нет! пока вернулся к доработке кода на php, доделаю - примусь за js, который я не знаю.
Ответить с цитированием
  #8 (permalink)  
Старый 27.11.2009, 16:00
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Покажите страничку с формой, по одному коду трудно сказать, что там еще не работает.
Ответить с цитированием
  #9 (permalink)  
Старый 27.11.2009, 16:27
Интересующийся
Отправить личное сообщение для boris2000 Посмотреть профиль Найти все сообщения от boris2000
 
Регистрация: 25.11.2009
Сообщений: 22

http://www.kidneyepidemiology.org/gb...rkingform.html
спасибо если поможете!
Ответить с цитированием
  #10 (permalink)  
Старый 27.11.2009, 16:32
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от boris2000
if(document.frm.fieldnames_array[j].value !="")){
А тут кстати синтаксическая ошибка: лишняя закрывающая круглая скобка

-----------

// функция провеки всего масссива полей и выдачи сообщения пользователю
function checkSomeFields() {
	var elements = document.forms["frm"].elements;
	var element;
	var msg = "";
	for(j = 0; j <= fieldnames_array.length; j++) {
		element = elements[fieldnames_array[j]];
		if (element && element.value) {
			msg += "\n\r" + fielddescription_array[j];
		}
	}
alert (msg);
return true;
}

Последний раз редактировалось Octane, 27.11.2009 в 16:48.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка блока php в js...Как сделать? reup Общие вопросы Javascript 2 30.07.2009 11:02
Вопрос как сделать эту панельку Определённых размеров и свойств. jei jQuery 3 09.06.2009 19:14
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56
Как сделать, чтобы 2 ссылки отображались как hover при наведении мышкой на любую? Ava Элементы интерфейса 5 19.05.2009 23:24
Как лучше сделать глобальный массив skyfish AJAX и COMET 4 17.02.2009 18:05