Показать сообщение отдельно
  #1 (permalink)  
Старый 30.08.2012, 22:20
Аспирант
Отправить личное сообщение для SkaN Посмотреть профиль Найти все сообщения от SkaN
 
Регистрация: 27.08.2011
Сообщений: 50

Как сохранить фокус на элементе?
Вопрос сформулирован некорректно, но я не смог сжать проблему до одного предложения.
Суть в чем: по событию focusin на input под ним показыается элемент (список). По исчезновению фокуса из элемента список прячется. Из этого списка нужно выбрать что-нибудь. Но проблема такова: нажатие на список считается потерей фокуса у этого input'а и событие для члена списка даже не срабатывает, т.е. вернуть искусственно список обратно нельзя. Подскажите, пожалуйста, как можно не убирать фокус с элемента (или вернуть фокус обратно), если клик был по члену списка?
Вот весь код:
<label for="category1-name">Рубрика из первого списка: </label><input type="text" id="category1-name" name="category1-name" title="Выберите рубрику из первого списка" /><br />
<ul id="list1" name="list1">
    <li id="3">?????</li>
    <li id="16">Рубрика</li>
</ul>
<label for="category2-name">Рубрика из второго списка: </label><input type="text" id="category2-name" name="category2-name" title="Выберите рубрику из второго списка" /><br />
<ul id="list2" name="list2">
    <li id="13">????</li>
</ul>
<input type="hidden" id="category1" name="category1" /><input type="hidden" id="category2" name="category2" />

$(document).ready(function(){
    $("#category1-name").focus(function(){
        $("#list1").show();
    }).focusout(function(){
        $("#list1").hide();
    });
    
    $("#category2-name").focusin(function(){
        $("#list2").show();
    }).focusout(function(){
        $("#list2").hide();
    });
    
    $("#list1 li").click(function(){ alert("ololo");
        $("#category2-name").focus();
        var $name = $(this).text(),
            $id = $(this).attr("id");
            
        $("#list1 li").removeClass("selected");
            
        $("#category1-name").val($name);
        $("category1").val($id);
        alert($("category1").val());
    });
});
Ответить с цитированием