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

HTML+CSS+JavaScript

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

 

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

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

тема: blur & focusout jquery
 
 автор: Deed   (27.05.2012 в 14:37)   письмо автору
 
 

Здравствуйте.
Вот здесь: http://jsfiddle.net/sXwZa/12/ перебираю уже десятый вариант, но задуманное работает некорректно.
Мне нужно, чтобы по клику "на стороне" или focusout'y форма исчезала.
Спасибо!

  Ответить  
 
 автор: ЯСА   (27.05.2012 в 15:00)   письмо автору
 
   для: Deed   (27.05.2012 в 14:37)
 

1. А где у вас "форма"-то?
При клике на спан "Вход" у вас появляется <div> (а не <form>), в котором два поля и кнопка сабмита.
Нажатие по сабмиту внутри тега <div> ни к чему не привёдёт - просто кнопка визуально нажмётся, а потом отожмётся.

2. "Терять фокус" могут только те элементы, которые этот "фокус могут иметь".
Тег <div> к таковым элементам не относится.

3. Ну и логика у вас, конечно, "суперская" :)
Ну как именно элемент с id="enter_login" может потерять фокус?
Во-первых, он его просто не может иметь, потому что это <span>.
Во-вторых, при нажатии на него этот элемент со страницы исчезает (становится невидимым).
Невидимый элемент ни приобрести, ни потерять фокус никак не может.
Вы же, совершенно не задумываясь, городите функцию по событию blur () для этого элемента :-)

  Ответить  
 
 автор: Deed   (27.05.2012 в 15:58)   письмо автору
 
   для: ЯСА   (27.05.2012 в 15:00)
 

Ага, спасибо, ЯСА!
Форма быть на этом сайте не должна, об этом выскакивает ругательство. И я прекрасно понимаю такие мелочи, как "просто кнопка визуально нажмётся, а потом отожмётся" :)

>>>Невидимый элемент ни приобрести, ни потерять фокус никак не может.

Я же пытаюсь вернуть класс... Да я все понял, что Вы сказали. Спасибо большое, конечно!
Но как решить эту проблему? Тем более, что при клике на инпуте, а потом вне спана #enter_login, кажись, все это нагромождение срабатывает. Но если поставить blur - нет.

Есть ли вообще решение этой задачи?

  Ответить  
 
 автор: ЯСА   (27.05.2012 в 16:03)   письмо автору
 
   для: Deed   (27.05.2012 в 15:58)
 

Стандартно данную задачу решают следующим образом.

На <span> вешается функция (можно безымянную) на событие click, которая:
--- а) делает <span id="mySPAN"> невидимым
--- б) делает <div id="myID"> с нужными тегами видимым
--- в) навешивает поименованную функцию на document на событие click, которая, в свою очередь:
--------- а) выясняет, по какому тегу страницы кликнули и определяет его id;
--------- б) если id != 'myDIV', поднимается от этого тега вверх по иерархии (к родителю, к родителю родителя...) и на каждом шаге проверяет условие (id == 'myDIV') плюс к тому же проверяет - а не является ли это уже самим тегом <body>
--------- в) если находится среди родителей тег с id == 'myDIV' (или сам первый тег был им), то ничего не делается (ибо клиент работает с нужным <div id="myDIV">, пусть работает дальше);
--------- г) а вот если клиент кликнул ВНЕ нужного <div id="myDIV">, то этот <div> делается невидимым; <span id="mySPAN">, наоборот, показывается; и - главное - эта поименованная функция с объекта document снимается.


Написать это дело на чистом javascript - пять строк.
Но вам же нужно на JQuery - а тут я вам не помогу. Не умею, ибо не пользуюсь (и другим не советую).
Ждите от кого-то иного - здесь "спецы по JQuery" имеются.

  Ответить  
 
 автор: Deed   (27.05.2012 в 16:14)   письмо автору
 
   для: ЯСА   (27.05.2012 в 16:03)
 

Извините, у меня в одной руке пылесос, другой я качаю коляску, и при этом боком поглядываю на монитор.
Спасибо огромное! Буду разбираться. И хотелось бы, конечно, увидеть эти самые пять строк!

  Ответить  
 
 автор: ЯСА   (27.05.2012 в 16:43)   письмо автору
 
   для: Deed   (27.05.2012 в 16:14)
 

<span id="mySPAN">Вход</span>
<div id="myDIV" style="background: lime; display: none">Всплывающее окно с кучей тегов внутри</div>

<script>
function ClcDoc (ev) { // первая
clearTimeout (TMR); var e = window.event || ev, o = e.srcElement || e.target; while (o.parentNode) {if (o.id == 'myDIV') break; else o = o.parentNode} // вторая
if (o.id != 'myDIV') with (document) {getElementById ('mySPAN').style.display = ''; getElementById ('myDIV').style.display = 'none'; onclick = null}} // третья

document.getElementById ('mySPAN').onclick = function () { // четвёртая
TMR = setTimeout ('document.onclick = ClcDoc', 0); with (document) {getElementById ('mySPAN').style.display = 'none'; document.getElementById ('myDIV').style.display = ''}} // пятая
</script>

  Ответить  
 
 автор: Deed   (27.05.2012 в 21:45)   письмо автору
 
   для: ЯСА   (27.05.2012 в 16:43)
 

Спасибо Вам большое, ЯСА! Распечатал, возьму затра с собой в командировку - попробую понять :)
Хорошо, хоть учебник JavaScript купил.
Спасибо Вам за отзывчивость.
:)

  Ответить  
Rambler's Top100
вверх

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