2011-02-02 4 views
0

У меня есть html-код с несколькими формами с уникальным идентификатором. Эта форма содержит одно поле ввода и якорный тег. Событие JQuery Click связано с тегом привязки, который затухает над родительским тегом, т.е. формойФункция фокуса JQuery странное поведение после fadeout

prob 1. Проблема в этом. Если есть пробел (где каретное управление символами), он работает отлично, иначе разумно. Я не знаю, является ли это ошибкой jquery.

$("form[class='multiwords'] :input:visible:enabled:first").focus(); 
//-------------------------^-------------------------------// 

проб 2. Когда первая форма удалена фокус не установка к следующему текстовому полю т.е. имеющих значение Два

Просто Issue. После успешного фокуса курсор устанавливается на начало текстового поля в опере, IE, но заканчивается на mozilla. Это проблема с браузером?

весь код

<html> 
    <head> 
     <title>test</title> 
     <script type='text/javascript' src='js/jquery-1.4.2.js'></script> 
     <script> 
      $(window).load(function() { 
       jQuery(document).ready(function() { 
        jQuery('.perform').live('click', function(event) { 
         var parentTag = "#"+$(this).parent("form").attr("id"); 
         $(parentTag).fadeOut(); 
         $("form[class='multiwords'] :input:visible:enabled:first").focus(); 
        }); 
       }); 
      }); 
     </script> 
     <style type="text/css"> 
      .perform{ 
       cursor: pointer; 
      } 
     </style> 
    </head> 

    <body> 

     <div id="content"> 
      <form id="f1" class='multiwords' name='f1'> 
       <input type=text class="input multi" id='i1' name=da value='one'><a hred=# class='perform' id='a1'>Rem Form One</a> 
      </form> 
      <form id="f2" class='multiwords' name='f2'> 
       <input type=text class="input multi" id='i2' name=da value='two'><a hred=# class='perform' id='a2'>Rem Form Two</a> 
      </form> 
      <form id="f3" class='multiwords' name='f3'> 
       <input type=text class="input multi" id='i3' name=da value='two'><a hred=# class='perform' id='a3'>Rem Form Three</a> 
      </form> 
     </div> 


    </body> 
</html> 
+0

@Kiran .. Я не могу понять, в чем ваша проблема ... я выполнил в своем браузере .. он работает нормально .. Когда мы нажимаем на rem form one, тогда он удаляет этот конкретный ... так whats the problem – Mihir

+0

@Mihir После удаления (фактически fadeout) первое видимое текстовое поле будет иметь значение = 'two' или id = 'i2', которое является формой f2 справа ?. Затем это текстовое поле должно сфокусироваться после затухания, но этого не происходит. – kiranking

ответ

0

# 1: Я предлагаю вам использовать метод нативный фокусировки() -

var input = $("form[class='multiwords'] :input:visible:enabled:first"); 

if(input.length) { 
    input[0].focus(); 
} 

IE имеет некоторые проблемы с методом фокус JQuery. Вот цитата из this help topic:

Запуск фокуса на скрытые элементы вызывает ошибку в Internet Explorer. Позаботьтесь только о вызове .focus() без параметров на видимых элементах.

# 2: О положении каретки, это поведение браузера. Я предлагаю вам выбрать текст для каждого фокуса. Таким образом, это позволит избежать этого.

+0

1.Focus запускает только видимый элемент (см. Применяемый фильтр). Когда форма затухает, она невидима. Затем первый элемент в следующей форме должен быть сфокусирован. 2.I до сих пор не понимаю, почему должно быть какое-либо дополнительное пространство перед <:input> – kiranking

+1

Попробуйте сосредоточиться на setTimeOut. http://stackoverflow.com/questions/2600186/focus-doesnt-work-in-ie –

+0

setTimeOut сделал трюк. Я начал с 200 и начал работать после 500 задержек. Но я все еще не понимаю об этом странном поведении SPACE (проблема 1). – kiranking

Смежные вопросы