|
|
|
| Здравствуйте.
Вот здесь: http://jsfiddle.net/sXwZa/12/ перебираю уже десятый вариант, но задуманное работает некорректно.
Мне нужно, чтобы по клику "на стороне" или focusout'y форма исчезала.
Спасибо! | |
|
|
|
|
|
|
|
для: Deed
(27.05.2012 в 14:37)
| | 1. А где у вас "форма"-то?
При клике на спан "Вход" у вас появляется <div> (а не <form>), в котором два поля и кнопка сабмита.
Нажатие по сабмиту внутри тега <div> ни к чему не привёдёт - просто кнопка визуально нажмётся, а потом отожмётся.
2. "Терять фокус" могут только те элементы, которые этот "фокус могут иметь".
Тег <div> к таковым элементам не относится.
3. Ну и логика у вас, конечно, "суперская" :)
Ну как именно элемент с id="enter_login" может потерять фокус?
Во-первых, он его просто не может иметь, потому что это <span>.
Во-вторых, при нажатии на него этот элемент со страницы исчезает (становится невидимым).
Невидимый элемент ни приобрести, ни потерять фокус никак не может.
Вы же, совершенно не задумываясь, городите функцию по событию blur () для этого элемента :-) | |
|
|
|
|
|
|
|
для: ЯСА
(27.05.2012 в 15:00)
| | Ага, спасибо, ЯСА!
Форма быть на этом сайте не должна, об этом выскакивает ругательство. И я прекрасно понимаю такие мелочи, как "просто кнопка визуально нажмётся, а потом отожмётся" :)
>>>Невидимый элемент ни приобрести, ни потерять фокус никак не может.
Я же пытаюсь вернуть класс... Да я все понял, что Вы сказали. Спасибо большое, конечно!
Но как решить эту проблему? Тем более, что при клике на инпуте, а потом вне спана #enter_login, кажись, все это нагромождение срабатывает. Но если поставить blur - нет.
Есть ли вообще решение этой задачи? | |
|
|
|
|
|
|
|
для: 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" имеются. | |
|
|
|
|
|
|
|
для: ЯСА
(27.05.2012 в 16:03)
| | Извините, у меня в одной руке пылесос, другой я качаю коляску, и при этом боком поглядываю на монитор.
Спасибо огромное! Буду разбираться. И хотелось бы, конечно, увидеть эти самые пять строк! | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: ЯСА
(27.05.2012 в 16:43)
| | Спасибо Вам большое, ЯСА! Распечатал, возьму затра с собой в командировку - попробую понять :)
Хорошо, хоть учебник JavaScript купил.
Спасибо Вам за отзывчивость.
:) | |
|
|
|