Не работает focus() в ff
Всем привет, пишу свои первые функции на JS и столкнулся с проблемой: в ff пытаюсь вернуть фокус на элемент формы после alert, но почему то не получается, хотя в IE все прекрасно работает, подскажите, в чем секрет. :)
function validate() { if(document.getElementById('doc').value=="") { window.alert("Не введено значение!"); document.getElementById('doc').focus(); } } |
alert срабатывает?
|
После закрытия диалогового окна, вызванного alert'ом, происходит передача фокуса родительскому окну, которая, видимо, и сбивает устанавливаемый вами фокус ввода.
|
Цитата:
Цитата:
|
Это происходит потому, что срабатывает событие по умолчанию: страница отправляет данные формы(перезагружается), поэтому никакого фокуса вы не увидите. А незаметно, т.к. локально:)
Выход: отменить действие по-умолчанию, если не проходит валидацию. Как это сделать смотрите в статьях про события. ЗЫ: return false тут не поможет:) |
По таймеру через небольшой промежуток времени попробуйте поставить фокус в нужное поле ввода
|
Цитата:
|
Цитата:
|
Цитата:
<script> document.write(Math.random()); // только для проверки что не идет перезагрузка (у себя убрать естественно) function validate() { var obj = document.form1.what; if (obj.value == '') { alert('Не введено значение'); obj.focus(); return false; } } </script> <form name="form1" method="post" action="" onSubmit="return validate()"> <input type="text" name="what"> <input type="submit" name="Submit" value="Submit"> </form> |
Спасибо, micscr.
Пользую движок форума, который я взял готовый. А вот еще подскажите. Вставляю смайлик в поле textarea. В Опере и Экслорере курсор остается позади вставленного смайлика, а в ФФ уходит вниз техтареа, а фокус на начало техтареа. Как для ФФ сделать, чтобы было как для Оперы и ИЕ? <textarea tabindex=3 name=p_text rows=15 cols=60 onselect="javascript:storeCaret(this);" onFocus="focused=true" onBlur="focused=false" onclick="javascript:storeCaret(this);" onkeyup="javascript:storeCaret(this);" onchange="javascript:storeCaret(this);" onkeypress="if((event.ctrlKey) && ((event.keyCode==10)||(event.keyCode==13))) {this.form.submit();}"></textarea> <a href="/forum/index.php?t=16" onClick="AddText(' :2: '); return false;"><img border=0 src="smiles/02_bored.gif" alt=":2:"></a> function AddText(text) { if (text!='') insertText(document.postform.p_text, text); document.postform.p_text.focus(); } |
Часовой пояс GMT +3, время: 08:33. |