select box как навигационное менюПри использовании простого JavaScript,
вы можете использовать select box для передвижения по сайту.
Рассмотрите этот пример:
<FORM name="navForm"> <select name="menu" onChange = "self.location = document.navForm.menu[document.navForm.menu.selectedIndex].value;"> <option value="home.html">Home</option> <option value="links.html">Links</option> <option value="contact.html">Contact Info</option> </select> </FORM>
Просто сохраните URL различных
страниц в option value.
Обработчик события OnChange вызовет
перенаправление расположения,
когда значение в поле изменено.
Вы могли бы использовать этот код,
чтобы изменить расположение другого фрейма
изменением 'self.location =' на 'top.framename.location ='
Часто возникает вопрос:
"Как инициировать форму по картинке, а
не по кнопке submit?"
Решение столь же просто, как этот пример:
<form> <input type="image" name="cancel" src="cancel.gif" alt="Cancel!" border=0> <input type="image" name="continue" src="continue.gif" alt="Click to Continue" border=0> </form>
Когда нажимается любая кнопка, форма
инициируется и координаты x/y щелчка мыши на кнопке
загружаются в объект запроса. Например,
если пользователь выбрал Cancel!,
объект запроса будет содержать переменные cancel.x и cancel.y.
Точно так же щелчок на Continue
привел бы к переменным continue.x и continue.y.
Здесь важно отметить, что элементы .x и .y - не переменные
объектов continue или cancel, а фактически часть имени
"continue.x". Следовательно, нельзя
использовать типичный метод для определения существования
одного из дочерних объектов запроса:
if (request.normalItem) act(); if (request.continue.x) // Noooo! Produces horrible error messages! doContinuingThings();
Тем не менее рассмотрите это:
if (request['normalItem']) act(); if (request['continue.x']) // Much better :) doContinuingThings();
Благодаря названным массивам JavaScript, можно проверить какая картинка инициировала форму.
Для некоторых приложений, полезно знать координаты
курсора на нажатой картинке. Эта информация,
конечно, содержится в парах image_element.x и image_element.y.
Следующий серверный JavaScript мог бы использоваться для этого:
x=0;
y=0;
if ((request['my_submit_image.x']) (request['my_submit_image.y'])) {
x = parseInt(request['my_submit_image.x']);
y = parseInt(request['my_submit_image.y']);
}
В качестве простого примера, предположите,
что ваша "домашняя" страница запрашивает имя пользователя,
затем использует это имя, чтобы обратиться к пользователю на
следующих страницах. Вы можете взять имя, используя форму, затем использовать
JavaScript для передачи имени пользователя в следующую страницу,
используя URL. Последующая страница могла бы
затем анализировать имя пользователя из URL, используя информацию в document.search.
home.html
<script language="JavaScript">
function nextPage() {
self.location = "next.html?name=" +
escape(document.theForm.userName.value);
// Use escape() any time there might be spaces or
} // non-alpa characters
</script>
<form onSubmit = "nextPage();return false;">
Enter your name: <input type=text name=userName>
<input type=submit>
</form>
next.html
userName = document.search;
userName = userName.substring(userName.indexOf("=")+1);
document.write("Greetings, " + userName + "<P>");
Первая страница:
<script language="javascript" type="text/javascript">
function goMail() {
if (confirm("Уверены, что хотите отправить сообщение?")) {
document.location = "UserMail.html?id=" + document.getElementById("userName").value;
}
}
</script>
<form>
<p>Ваше имя: </p>
<input id="userName" type="text" name="userName" value="" />
<br/>
<input type ="button" value="Отправить сообщение" onclick="goMail()" />
</form>
Вторая страница:
<head>
<title></title>
<script language="javascript" type="text/javascript">
function OnLoad() {
var paramValue = window.location.href.split("?")[1].split("=")[1];
document.getElementById("UsName").innerHTML = paramValue;
}
</script>
</head>
<body onload="OnLoad()">
<font id="UsName">
</font>
</body>
получить значение выбранной в данный момент radio button в radio group или группе checkboxes
Существует свойство, созданное в объекте form для каждой radio buttons или checkboxes
с тем же самым именем. Например, следующий HTML код:
<form name='theForm'>
<input type=radio name="gender" value="Male">Male
<input type=radio name="gender" value="Female">Female
<input type=radio name="gender" value="Evasive">Not Specified
</form>
приводит к созданию 3-х элементов массива,
вызываемых с помощью document.theForm.gender.
Чтобы определить значение выбранной кнопки (или checkbox'а),
вам нужно проверить свойство checked
каждого из элементов. Например:
function checkIt() {
theGroup = document.theForm.gender;
for (i=0; i< theGroup.length; i++) {
if (theGroup[i].checked) {
alert("The value is " + theGroup[i].value);
break;
}
}
}
Для получения и установки значения radio button value
на javascript можно использовать следующие функции:
function getCheckedValue(radioObj) {
if(!radioObj)
return "";
var radioLength = radioObj.length;
if(radioLength == undefined)
if(radioObj.checked)
return radioObj.value;
else
return "";
for(var i = 0; i < radioLength; i++) {
if(radioObj[i].checked) {
return radioObj[i].value;
}
}
return "";
}
function setCheckedValue(radioObj, newValue) {
if(!radioObj)
return;
var radioLength = radioObj.length;
if(radioLength == undefined) {
radioObj.checked = (radioObj.value == newValue.toString());
return;
}
for(var i = 0; i < radioLength; i++) {
radioObj[i].checked = false;
if(radioObj[i].value == newValue.toString()) {
radioObj[i].checked = true;
}
}
}
получить форму, чтобы инициировать процесс запуска клавишей Enter
Форма отправляется, если нажата клавиша enter,
в то время как единственный входной текстовый элемент формы имеет фокус.
Вы можете вызывать подобное поведение в форме,
имеющей более одного элемента, разбивая форму на ряд отдельных форм,
так, чтобы каждая форма имела только один текстовый элемент.
Используйте обработчик события onSubmit (или action="javascript:myFunction();")
для накопления данных из других форм в вашей странице и инициируйте их все сразу.
отключить поле текстового ввода
Используйте обработчик onfocus для вызова функции blur():
<INPUT TYPE="text" NAME="aTextField" ONFOCUS="this.blur()">
динамически отключать/включать поле
используйте функцию eskip (e)
{ this.blur(); }
<A HREF="javascript:document.formName.aTextField.onfocus = skip; void
0">disable text field</A>
<A HREF="javascript:document.formName.aTextField.onfocus = null; void
0">enable text field</A>
{ this.blur(); }
disable text field
enable text field
сделать загрузку страницы при выборе флажка
Используйте обработчик OnChange для вызова функции submit():
<form method=get OnChange='this.submit();'>
<input type=checkbox name="fnew">Только новые
</form>
Сохранение данных в локальное хранилище браузера:
sessionStorage — запоминает результат
пока открыт сайт во вкладке(окне), можно свободно перемещаться по сайту,
обновлять страницы, но не закрывать окно браузера(вкладку).
localStorage — запоминает результат на очень долгое время,
пока пользователь не очистит локальное хранилище браузера.
Можно через несколько дней зайти на сайт и увидеть ранее заполненную форму.
<style>
#idVhod {
display: none; /* изначально скрыт */
}
</style>
<button onclick="onclickVhod()">открыть</button> <span id="idVhod">скрытый текст</span>
<script>
var idVhod = document.getElementById('idVhod');
function onclickVhod() {
idVhod.style.display = (idVhod.style.display == 'inline') ? '' : 'inline'
localStorage.setItem('hide', idVhod.style.display); // сохраняем значение в объект hide
}
if(localStorage.getItem('hide') == 'inline') { // если значение объекта hide "inline"
document.getElementById('idVhod').style.display = 'inline';
}
//localStorage.removeItem('hide') // удалить один элемент
//localStorage.clear() // удалить все элементы
</script>
скрытый текст
Особенности onClick, onSubmit, onReset
onClick этой ссылкиonClick этой кнопкиonReset у формыonSubmit у формы!DOM объект элемента INPUT:
interface HTMLInputElement : HTMLElement {
attribute DOMString accept;
attribute DOMString alt;
attribute DOMString autocomplete;
attribute boolean autofocus;
attribute boolean defaultChecked;
attribute boolean checked;
attribute DOMString dirName;
attribute boolean disabled;
readonly attribute HTMLFormElement? form;
readonly attribute FileList? files;
attribute DOMString formAction;
attribute DOMString formEnctype;
attribute DOMString formMethod;
attribute boolean formNoValidate;
attribute DOMString formTarget;
attribute unsigned long height;
attribute boolean indeterminate;
readonly attribute HTMLElement? list;
attribute DOMString max;
attribute long maxLength;
attribute DOMString min;
attribute boolean multiple;
attribute DOMString name;
attribute DOMString pattern;
attribute DOMString placeholder;
attribute boolean readOnly;
attribute boolean required;
attribute unsigned long size;
attribute DOMString src;
attribute DOMString step;
attribute DOMString type;
attribute DOMString defaultValue;
attribute DOMString value;
attribute Date? valueAsDate;
attribute double valueAsNumber;
attribute unsigned long width;
void stepUp(optional long n);
void stepDown(optional long n);
readonly attribute boolean willValidate;
readonly attribute ValidityState validity;
readonly attribute DOMString validationMessage;
boolean checkValidity();
void setCustomValidity(DOMString error);
readonly attribute NodeList labels;
void select();
attribute unsigned long selectionStart;
attribute unsigned long selectionEnd;
attribute DOMString selectionDirection;
void setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction);
};