Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: focus на input в thickbox при загрузке
 
 автор: Richard Ferlow   (05.05.2008 в 20:49)   письмо автору
 
 

Собственно, на сайте форма авторизации открывается через thickbox - вызывается отдельный php файл.
Нужно сделать, чтобы становилось активным поле ввода логина.

Если для input вставить onmouseover="document.forms.sdloginform.loginusername.focus();" - то при наведении указателя поле становится активным для ввода.

Однако же если в конце этого вызываемого файла вставить
<script language="JavaScript">
<!--

document.sdloginform.loginusername.focus();

//-->
</script>

То при вызове окошка вылезет ошибка яваскрипта - элемент не найден.

Что можно с этим сделать ? Позарез как нужно. Может быть иной вариант есть ?

   
 
 автор: Richard Ferlow   (05.05.2008 в 23:11)   письмо автору
 
   для: Richard Ferlow   (05.05.2008 в 20:49)
 

Нашел вот такое нечто, только не знаю как этим воспользоваться.
http://www.gerd-riesselmann.net/development/focus-first-form-field-with-jquery


// Focus first element
$.fn.focus_first = function() {
  var elem = $('input:visible', this).get(0);
  var select = $('select:visible', this).get(0);
  if (select && elem) {
    if (select.offsetTop < elem.offsetTop) {
      elem = select;
    }
  }
  var textarea = $('textarea:visible', this).get(0);
  if (textarea && elem) {
    if (textarea.offsetTop < elem.offsetTop) {
      elem = textarea;
    }
  }
  
  if (elem) {
    elem.focus();
  }
  return this;
}

Use it like this: 


$(window).load(function() {
  $('form').focus_first();
);

I wonder, though, if there is a more comprehensive expression to find the first element of either type "input", "select", or "textarea".


$('input:visible,select:visible,textarea:visible', this).eq(0)

   
 
 автор: sim5   (06.05.2008 в 04:12)   письмо автору
 
   для: Richard Ferlow   (05.05.2008 в 20:49)
 

<body onload="document.sdloginform.loginusername.focus();">
а остальное выбросить, если нужен фокус при загрузке страницы.

   
 
 автор: Richard Ferlow   (06.05.2008 в 09:16)   письмо автору
 
   для: sim5   (06.05.2008 в 04:12)
 

Так, к сожалению, никак не работает. Не видит элемент.

Поле ввода в данамическом окне подгружается

   
 
 автор: sim5   (06.05.2008 в 09:20)   письмо автору
 
   для: Richard Ferlow   (06.05.2008 в 09:16)
 

Хотите сказать, что это неработает?:

<html>
<head>
</head>
<body onload="document.sdloginform.loginusername.focus();">
<form action="" name="sdloginform" id="sdloginform">
<input type="text" name="loginusername">
</form>
</body>
</html>

Это все должно быть прописано в подгружаемом файле, включая вызов - <body onload="document.sdloginform.loginusername.focus();">

   
 
 автор: Richard Ferlow   (06.05.2008 в 09:21)   письмо автору
 
   для: sim5   (06.05.2008 в 09:20)
 

Да, именно так и пробовал уже.

И через getelementbyid тоже.

Без jquery окна работает, в нем - никак.

   
 
 автор: sim5   (06.05.2008 в 09:36)   письмо автору
 
   для: Richard Ferlow   (06.05.2008 в 09:21)
 

Ну не знаю, у меня все работает.

   
 
 автор: Richard Ferlow   (06.05.2008 в 17:23)   письмо автору
 
   для: sim5   (06.05.2008 в 09:36)
 

Может где-то в интернете можно увидеть Ваш пример, может быть я что-то упускаю ?

   
 
 автор: sim5   (06.05.2008 в 17:30)   письмо автору
 
   для: Richard Ferlow   (06.05.2008 в 17:23)
 

Вот пример загружаемого в окно файла:
1.html

<html> 
<head> 
</head> 
<body onload="document.sdloginform.loginusername.focus();"> 
<form action="" name="sdloginform" id="sdloginform"> 
<input type="text" name="loginusername"> 
</form> 
</body> 
</html>

А это файл из которого вызываем окно:

<html>
<head>
</head>
<body>
<script>
window.open('1.html','','')
</script>
</body>
</html>

   
 
 автор: Richard Ferlow   (06.05.2008 в 17:58)   письмо автору
 
   для: sim5   (06.05.2008 в 17:30)
 

Тут ведь новое окно браузера открывается. В нем будет конечно работать.

Я же про библиотеку говорю - thickbox - тут поверх содержимого через iframe загружается содержимое стороннего файла. Вот в нем то и не удается фокус установить.

   
 
 автор: sim5   (07.05.2008 в 05:59)   письмо автору
 
   для: Richard Ferlow   (06.05.2008 в 17:58)
 

Ну тогда надо саму библиотеку смотреть (у меня она есть, но я ее еще не разу так и не подключал, не пробовал). Получается, что загруженный документ теряет фокус. А что вы загружаете в это окно, каково содержимое?

   
 
 автор: Richard Ferlow   (07.05.2008 в 22:24)   письмо автору
 
   для: sim5   (07.05.2008 в 05:59)
 

php скрипт - он html формирует.

Пока оставил - onmouseover - это работает.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования