Проверка выбора элемента списка перед передачей результатов формы
Проверка выбора элемента выпадающего списка (меню выбора) практически ничем не отличается от аналогичной проверки для группы переключателей (о которой говорилось в предыдущем совете). Чтобы указать Web-браузеру, что посетитель может выбирать из меню только один элемент, не указывайте в дескрипторе <select> атрибут multiple. Если же необходимо, чтобы посетитель сайта имел возможность выбирать в меню одновременно несколько элементов, включите в дескриптор <select> атрибут multiple. Как и в случае с группой переключателей, существует возможность с помощью браузера ограничивать количество выбранных посетителем элементов меню выбора. Фактически необходимо проверить, что посетитель выбрал хотя бы один элемент.
ПРАКТИКУМ
Если вы хотите, чтобы посетитель выбрал из списка выбора хотя бы один элемент, введите в качестве первого элемента списка текст наподобие "— выберите один элемент —" или "— Выберите хотя бы один элемент —", что позволит посетителю понять, что он просто обязан сделать выбор. Далее необходимо гарантировать, что посетитель не выбрал первый элемент списка (поскольку он фактически не является опцией). Приведенный ниже JavaScript-сценарий, например, гарантирует, что посетитель сайта выбрал, по крайней мере, один элемент в выпадающем списке (причем не первый элемент, который имеет индекс 0):
<html><body><head><script language="JavaScript"><! --function ValidateForm(Form){//** Другие операторы проверки данных формы **if (Form.Company_Type.options[0].selected){ .alert("Первый элемент списка \"Тип компании\" не является допустимым выбором. Пожалуйста, выберите любой другой элемент.") ;Form.Company_Type.focus();return (false);}if (Form.Company_Type.selectedindex<1){alert("Пожалуйста, выберите один из элементов в списке \"Тип компании\".");Form.Company_Type.focus() ;return (false);}return(true);//--></script>
Свойство selectedindex содержит индекс выбранного посетителем элемента (элементов) выпадающего списка. Чтобы гарантировать, что посетитель не может выбрать первый элемент списка, необходимо проверить, что первый элемент (т.е.элемент с индексом 0) не выбран, а затем проверить, выбран ли хотя бы один из остальных элементов списка (со значениями индекса 1 и выше).
Как было показано в двух предыдущих советах, для того чтобы Web-браузер запускал функцию проверки результатов формы при нажатии кнопки Submit, в дескриптор <form> формы необходимо вставить показанный ниже атрибут onSubmit.
<form name="ExampleForm"onSubmit="return ValidateForm(ExampleForm)"action="http://NVBizNet2.com/_scripts/_pl/FrmScrpt.CGI"method="POST"enctype="application/x-www-form-urlencoded">
He пропустите ключевое слово "return", которое находится перед вызовом функции ValidateForm(). В противном случае Web-браузер передаст результаты формы Web-серверу, даже если функция ValidateForm() вернет значение False, указывающее на наличие ошибок в результатах формы. Если все атрибуты дескриптора введены без ошибок (как в приведенном примере), атрибут onSubmit за-ставит Web-браузер после нажатия посетителем кнопки Submit выполнить JavaScript-сценарий с целью проверки результатов заполнения формы. Если функция ValidateForm() возвращает значение True, Web-браузер передаст результаты формы по URL-адресу, указанному в атрибуте method дескриптора <form>. В противном случае Web-браузер вернется к форме ввода данных и поместит курсор на элемент формы, указанный в методе focus() в коде JavaScript-сценария.