Кнопки
Для отправки введенных данных на форме используются кнопки.
Для создания кнопки используется либо элемент button:
<button name="send">Отправить</button>
Либо элемент input:
<input type="submit" name="send" value="Отправить" />
С точки зрения функциональности в html эти элементы не совсем равноценны,
но в данном случае они нас интересуют с точки зрения взаимодействия с кодом javascript.
При нажатии на любой из этих двух вариантов кнопки происходит отправка формы по адресу,
который указан у формы в атрибуте action, либо по адресу веб-страницы,
если атрибут action не указан. Однако в коде javascript мы можем перехватить отправку, обрабатывая событие click
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<form name="search">
<input type="text" name="key"></input>
<input type="submit" name="send" value="Отправить" />
</form>
<script>
function sendForm(e){
// получаем значение поля key
var keyBox = document.search.key;
var val = keyBox.value;
if(val.length>5){
alert("Недопустимая длина строки");
e.preventDefault();
}
else
alert("Отправка разрешена");
}
var sendButton = document.search.send;
sendButton.addEventListener("click", sendForm);
</script>
</body>
</html>
При нажатии на кнопку происходит событие click, и для его обработки к кнопке прикрепляем обработчик sendForm.
В этом обработчике проверяем введенный в текстовое поле текст.
Если его длина больше 5 символов, то выводим сообщение о недостимой длине и прерываем обычный ход события
с помощью вызова e.preventDefault().
В итоге форма не отправляется.
Если же длина текста меньше шести символов, то также выводится сообщение, и затем форма отправляется.
Также мы можем при необходимости при отправке изменить адрес, на который отправляются данные:
function sendForm(e){
// получаем значение поля key
var keyBox = document.search.key;
var val = keyBox.value;
if(val.length>5){
alert("Недопустимая длина строки");
document.search.action="PostForm";
}
else
alert("Отправка разрешена");
}
В данном случае, если длина текста больше пяти символов,
то текст отправляется, только теперь он отправляется по адресу PostForm,
поскольку задано свойство action:
document.search.action="PostForm";
Для очистки формы предназначены следующие
равноценные по функциональности кнопки:
<button type="reset">Очистить</button> <input type="reset" value="Очистить" />При нажатию на кнопки произойдет очистка форм. Но также функциональность по очистке полей формы можно реализовать с помощью метода reset():
function sendForm(e){
// получаем значение поля key
var keyBox = document.search.key;
var val = keyBox.value;
if(val.length>5){
alert("Недопустимая длина строки");
document.search.reset();
e.preventDefault();
}
else
alert("Отправка разрешена");
}
Кроме специальных кнопок отправки и очистки на форме
также может использоваться обычная кнопка:
<input type="button" name="send" value="Отправить" />
При нажатии на подобную кнопку отправки данных не происходит, хотя также генерируется событие click:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<form name="search">
<input type="text" name="key" placeholder="Введите ключ"></input>
<input type="button" name="print" value="Печать" />
</form>
<div id="printBlock"></div>
<script>
function printForm(e){
// получаем значение поля key
var keyBox = document.search.key;
var val = keyBox.value;
// получаем элемент printBlock
var printBlock = document.getElementById("printBlock");
// создаем новый параграф
var pElement = document.createElement("p");
// устанавливаем у него текст
pElement.textContent = val;
// добавляем параграф в printBlock
printBlock.appendChild(pElement);
}
var printButton = document.search.print;
printButton.addEventListener("click", printForm);
</script>
</body>
</html>
При нажатии на кнопку получаем введенный в текстовое поле текст,
создаем новый элемент параграфа для этого текста и добавляем параграф в элемент printBlock.
Output