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.
|
|
|
|