| 
	| 
	
	| 
		
	| 
			
			 
			
				26.11.2009, 19:27
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 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);"> |  |  
	| 
		
	| 
			
			 
			
				26.11.2009, 20:57
			
			
			
		 |  
	| 
		
			
			|       |  | 
					Регистрация: 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"];
 |  |  
	| 
		
	| 
			
			 
			
				26.11.2009, 23:36
			
			
			
		 |  
	| 
		
			|  | Модератор Всея Форума       |  | 
					Регистрация: 14.05.2009 
						Сообщений: 4,021
					 
		
 |  |  
	| 
	
 
	| Сообщение от Octane |  
	| Массивы лучше объявлять так: |  
	
 Чем же конструктор не угодил? |  |  
	| 
		
	| 
			
			 
			
				27.11.2009, 01:20
			
			
			
		 |  
	| 
		
			
			|       |  | 
					Регистрация: 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. |  
	
 |  
	
 |  |  
	| 
		
	| 
			
			 
			
				27.11.2009, 11:27
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 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;
}
 |  |  
	| 
		
	| 
			
			 
			
				27.11.2009, 14:57
			
			
			
		 |  
	| 
		
			
			|       |  | 
					Регистрация: 10.07.2008 
						Сообщений: 3,873
					 
		
 |  |  
	| 
	
 
	| Сообщение от boris2000 |  
	| 
document.frm.fieldnames_array[j].
 |  
	
 Читайте внимательнее по ссылке про аксессоры. |  |  
	| 
		
	| 
			
			 
			
				27.11.2009, 15:42
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 25.11.2009 
						Сообщений: 22
					 
		
 |  |  
	| спасибо, исправил на document.frm[fieldnames_array[j]].valueно НЕ РАБОТАЕТ! увы!
 почитал в сети, посмотрел всякие примеры - вроде должно работать, ан нет! пока вернулся к доработке кода на php, доделаю - примусь за js, который я не знаю.
 |  |  
	| 
		
	| 
			
			 
			
				27.11.2009, 16:00
			
			
			
		 |  
	| 
		
			
			|       |  | 
					Регистрация: 10.07.2008 
						Сообщений: 3,873
					 
		
 |  |  
	| Покажите страничку с формой, по одному коду трудно сказать, что там еще не работает. |  |  
	| 
		
	| 
			
			 
			
				27.11.2009, 16:27
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 25.11.2009 
						Сообщений: 22
					 
		
 |  |  
	|  |  |  
	| 
		
	| 
			
			 
			
				27.11.2009, 16:32
			
			
			
		 |  
	| 
		
			
			|       |  | 
					Регистрация: 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.
 |  |  |  |