Приветствую Вас, Гость

Предотвращение случайной очистки посетителем элементов формы

При нажатии кнопки Reset Web-браузер должен очистить все введенные посетителем сайта данные и восстановить исходное состояние для всех элементов формы. К счастью, Web-браузеры "знают", что они должны делать в ответ на щелчок указателем мыши на кнопке Reset формы, поэтому вам не нужно писать сценарий, который бы выполнял функцию очистки формы. Тем не менее, если форма содержит большое количество элементов, или если посетитель вводит в многострочные поля ввода текста большой объем текста, желательно организовать удобное для пользователя поведение, при котором запрашивается подтверждение очистки данных формы перед фактической очисткой.

ПРАКТИКУМ

Аналогично тому, как атрибут onSubmit заставляет Web-браузер выполнить сценарий перед выполнением стандартной для кнопки Submit операции по передаче результатов формы Web-серверу, атрибут onReset указывает браузеру выполнить сценарий перед восстановлением элементов формы в их исходные состояния. Например, атрибут onReset в следующем определении формы указывает браузеру при нажатии посетителем кнопки Reset выполнить JavaScript-функцию PreResetProc():

<form name="ExampleForm"
onReset="return preResetProc(ExampleForm)"
onSubmit="return validateForm(ExampleForm)"
action="http://NVBizNet2.com/_scripts/_pl/FrmScrpt.CGI"
onreset="clearForm(ExampleForm)" method="POST"
enctype="application/x-www-form-urlencoded">

В свою очередь, JavaScript-функция может выполнять предварительную обработку перед восстановлением состояния формы, начиная со стандартной очистки всех элементов формы и заканчивая очисткой только определенных элементов. Как и атрибут onSubmit, атрибут onReset указывает браузеру вызвать JavaScript-функцию. Затем, если функция возвращает значение False, Web-браузер не будет выполнять стандартную процедуру очистки формы, выполняемую при нажатии кнопки Reset. В противном случае, если возвращается значение True, выполняется стандартная очистка элементов формы и возврат их в исходное состояние.
Так, например, следующий JavaScript-код при использовании его совместно с формой из предыдущего примера выведет на экран показанное на рис. 3.13 диалоговое окно подтверждения.

<html><body><head>
<script language="JavaScript">
<! --
function preResetProc(Form)
{
if (confirm("Вы уверены, что хотите очистить все поля формы?"))
{
//*** Другие операции, выполняемые перед очисткой формы
//(если таковые имеются) ***
Form.FirstName.focus();
return (true);
}
Else
{
Form.FirstName.focus();
return (false);
}
}
// -->
</script>

Рис. 3.13

Если посетитель нажмет кнопку "Cancel" ("Отмена"), метод confirm() и функция PreResetProc() вернут значение False, и Web-браузер не будет выполнять стандартную процедуру очистки элементов формы. Если же была нажата кнопка ОК, метод confirm() и функция PreResetProc() вернут значение True, и Web-браузер очистит все элементы формы и вернет их в исходное состояние.