Почему фокус загрузки не работает на этом скрипте? - PullRequest
0 голосов
/ 14 апреля 2011

Это образец моей формы. когда страница загружается, фокус должен быть на «fbox», но это не работает, и я не понимаю, почему. форма содержит niceditor, но я не думаю, что это проблема

<html>
<head></head>
<body onload="document.form.fbox.focus();">
<body>
<form method='post' action='' name='form' >
Headline <input name='fbox' type='text' class='form' id='box' autocomplete='off' size='80'><br>
Your text</font><br><script type="text/javascript" src="nicEdit.js"></script><script type="text/javascript">bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });</script>
<textarea name="description" style="width: 100%; height:200px;"></textarea></p>     
<p><select name='catg' >
<option value='' selected >Select category</option>
</select>
<input type="submit" id='button' name="Submit" value="Submit" class="button"></form>
</body></html>

спасибо

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

У вас есть две метки тела .Я предлагаю избавиться от одного из них и посмотреть, поможет ли это.

В середине этого кода также есть блуждающий закрывающий тег </font>.Многие люди стараются расположить разметку так, чтобы ее было легко прочитать и увидеть структуру документа.Возможно, вы захотите изучить эту практику.

Другая возможность заключается в том, что ваш плагин "nicEdit" не выполняет вызов ".focus ()".Попробуйте снять это и посмотреть, работает ли фокус (как эксперимент).Если это происходит, вы можете выполнить вызов «focus ()» после завершения кода nicEdit:

bkLib.onDomLoaded(function() {
  nicEditors.allTextAreas();
  document.form.fbox.focus();
});

(это адаптация кода в вашем существующем блоке <script>.)

0 голосов
/ 14 апреля 2011

У вас есть два элемента тела.Это не сработает.

Скрипты запускаются сверху вниз, поэтому вы запускаете «onload» до того, как остальная часть страницы будет обработана.Вероятно, элемент, который вы пытаетесь сфокусировать, отсутствует там, когда происходит событие.

Существует несколько способов исправить это.В jQuery есть удобный метод, который ожидает, пока DOM не будет готов.

Простой способ - просто запустить ваш скрипт из низа страницы в блоке скрипта.

<script type="text/javascript">
document.form.fbox.focus()
</script>
...