Jump to content
  • 0

Скрипт: Изменение содержимого 'value'


DjTarik
 Share

Question

Вот, написал мелкий скриптик:

http://tarik.kasperovich.ru/test_5/index.html

				// The document is loaded -->
onload = function ()
{
ChangeFormValue();
}
// -->

// Change contained in "value" -->
function ChangeFormValue ()
{
var text = new Array(); // array of values by default -->
var form = document.getElementById('ChangeFormValue'); // form's id -->
var array = form.elements; // array of form's elements -->
for (var i = 0; i < array.length; i++)
{
var el = array[i]; // element -->

if (el.type == 'text' || el.tagName.toLowerCase() == 'textarea') // only "input type='text'" & "textarea" -->
{
text[i] = el.value; // array of values by default -->
el.num = i;

el.onfocus = function ()
{
if (this.value == text[this.num])
{
this.value = '';
}
}
el.onblur = function ()
{
if (this.value == '')
{
this.value = text[this.num];
}
}
}
}

form.onsubmit = function ()
{
return ResultValue(array, text); // arrays of elements and values by default -->
}

}
// -->

// Check result -->
function ResultValue (array, text)
{
for (var i = 0; i < array.length; i++)
{
var el = array[i]; // element -->
if (el.type == 'text' || el.tagName.toLowerCase() == 'textarea') // only "input type='text'" & "textarea" -->
{
if (el.value == text[i])
{
el.value = '';
}
}
}
return false;
}
// -->

Работает таким образом:

1. Берём 'id' формы, пробегаем по всем элементам.

2. Заносим в массив значения 'value' по умолчанию.

3. Находим только текстовые поля и "текстареи" (потому что больше нигде нельзя вводить информацию).

4. На события 'onfocus' и 'onblur' проверяем введённые значения со значениями по умолчанию. Если что-либо ввели - оставляем введённое. Если нет - возвращаем то, что было изначально.

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

Кто может указать на ошибки в коде и логике?

Я только учусь - ваши мнения мне будут полезны...

Спасибо.

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0
1. Берём 'id' формы, пробегаем по всем элементам.

2. Заносим в массив значения 'value' по умолчанию.

Про свойство defaultValue у вышеперечисленных элементов не слашали?

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

Очень странная логика...

Открыл человек подредактировать форму, изменил одно поле, и это же одно поле и сохранится в базу. А остальные станут пустыми.

Link to comment
Share on other sites

  • 0
Про свойство defaultValue у вышеперечисленных элементов не слашали?

Нет )

Очень странная логика...

Открыл человек подредактировать форму, изменил одно поле, и это же одно поле и сохранится в базу. А остальные станут пустыми.

Эммм... По моей логике, там по умолчанию должны быть подсказки, типо как корректно заполнять форму. Соответственно, надпись "Ваше имя" оставлять не логично... Или как правильно? Чтобы не отправлять на сервер данные по умолчанию, если поле не было изменено?

Спасибо за замечания. Пойду исправлять...

Link to comment
Share on other sites

  • 0
Или как правильно?

Не отправлять вовсе, но при этом должны быть так называемые обязательные поля и если хотя бы они заполнены, то отправить, если нет - выдать предупреждение (с последующим баном :) )

и это же одно поле и сохранится в базу. А остальные станут пустыми.

Сообщение может быть отправлено на мыло. :)

Link to comment
Share on other sites

  • 0
Не отправлять вовсе, но при этом должны быть так называемые обязательные поля и если хотя бы они заполнены, то отправить, если нет - выдать предупреждение (с последующим баном :) )

Сообщение может быть отправлено на мыло. :)

C обязательными полями понятно. А если это не обязательное поле и в нем была подсказка? Пользователь не заполнил поле - что мне отправлять? Я хотел пустое... Как нужно?

Link to comment
Share on other sites

  • 0
C обязательными полями понятно. А если это не обязательное поле и в нем была подсказка? Пользователь не заполнил поле - что мне отправлять? Я хотел пустое... Как нужно?

ну все правильно, так и должно быть, если поле не обязательно к заполнению - значит пусто, нет данных.

Link to comment
Share on other sites

  • 0

Вот, http://tarik.kasperovich.ru/test_5/index.html, переделал, как сказал s0rr0w. Код и вправду стал короче и понятнее)

s0rr0w, а что ты предложишь сделать с проверкой, когда это не обязательное поле и в нем была подсказка? Пользователь не заполнил поле - что мне отправлять?

Link to comment
Share on other sites

  • 0
Вот, http://tarik.kasperovich.ru/test_5/index.html, переделал, как сказал s0rr0w. Код и вправду стал короче и понятнее)

s0rr0w, а что ты предложишь сделать с проверкой, когда это не обязательное поле и в нем была подсказка? Пользователь не заполнил поле - что мне отправлять?

Начинающие кодеры забывают про два состояния работы с данными

1. создание нового контента

2. редактирование уже существующего контента

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

Поэтому советую для начала подумать, нужно ли вообще так делать?

Link to comment
Share on other sites

  • 0
Начинающие кодеры забывают про два состояния работы с данными

1. создание нового контента

2. редактирование уже существующего контента

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

Поэтому советую для начала подумать, нужно ли вообще так делать?

Ну, а если стоит конкретная задача - клиент сказал: "Хочу так!" Как быть в таком случае?

Link to comment
Share on other sites

  • 0
Ну, а если стоит конкретная задача - клиент сказал: "Хочу так!" Как быть в таком случае?

Рассказать ему, почему он баран, предупредить, что тебе не сложно сделать хоть 10 шапок из одной шкурки, но переделывать только за его счет.

Если клиент позволяет себе диктовать условия, то гнать такого клиента в шею.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy