Проблема с focusin / focusout с использованием jquery в IE7 и Firefox 3.xx - PullRequest
0 голосов
/ 30 июня 2010

Я сейчас тяну себя за волосы из-за очень странной проблемы.

У меня есть несколько полей ввода, в которые я поместил текст, используя некоторые элементы <span>.

Вкл.два из них, мой скрипт работает отлично, но на последнем он действует немного странно.

Структура HTML для полей ввода идентична на 100%.

Я использую focusin /события focusout для показа или скрытия текста.

Код для достижения этого идентичен (и, возможно, его можно было бы написать более эффективно, но я рассмотрю это на более позднем этапе).

Этот код работает нормально

// Defalut value i HVOR                
$("input#hvor").focusin(function(){
  $(this).parent().find(".spanHvorLabel").hide();
});
$("input#hvor").focusout(function(){
  if ($(this).val().length < 1){
    $(this).parent().find(".spanHvorLabel").show();
  }                 
});

// Defalut value i VEJ                
$("input#vej").focusin(function(){
  $(this).parent().find(".spanVejLabel").hide();
});
$("input#vej").focusout(function(){
  if ($(this).val().length < 1){
    $(this).parent().find(".spanVejLabel").show();
  }                 
});

И структура HTML для этого выглядит следующим образом:

<div class="yui-ac left" id="AutoSuggestPlace">
  <label for="hvor"><span class="spanHvorLabel">By, postnr, kommune</span></label>
  <input type="text" autocomplete="off" class="yui-ac-input ac_input" id="hvor" name="hvor"/>
</div>

<div class="left" id="AutoSuggestRoad">
  <label for="vej"><span class="spanVejLabel">Vej</span></label>
  <input type="text" id="vej" class="yui-ac-input ac_input" name="vej" autocomplete="off" />
</div>

Как уже упоминалось выше, код работает нормально, кроссбраузер.

Однако следующий код не работает в Firefox и IE7, даже если он идентичен.

$("input#fritekst").focusin(function(){
    $(this).parent().find(".sagsnummerLabel").hide();
});

$("input#fritekst").focusout(function(){
   if ($(this).val().length < 1){
     $(this).parent().find(".sagsnummerLabel").show();
   }                 
});

HTML выглядит следующим образом

<div id="fritekstholder">
  <label for="fritekst"><span class="sagsnummerLabel">F.eks. sagsnummer</span></label>
  <input type="text" name="fritekst" id="fritekst" />
</div>

Но по какой-то причине, когда текст щелкается в этомкоробка не скрываетсяНо если кто-то щелкнет в области поля ввода, где нет текста, он будет отображаться / скрываться правильно.

Чтобы исправить это, я написал функцию щелчка, которая гарантирует, что текст будет скрыт после его нажатия.

Это выглядит так

// Defalut value i Fritekstsøgning
$(".sagsnummerLabel").click(function() {
  $(this).hide();
  $("input#fritekst").focus();
});

Этот обходной путь работает в Firefox и также скрывает текст в IE7 ... но как только поле ввода теряет фокус, текст все еще отсутствует в IE7.

Возможно, я упускаю что-то очень простое, но я думаю, что слишком долго на это смотрю, поэтому я надеюсь, что найдется кто-то, кто может дать мне решение: -)

Ответы [ 2 ]

0 голосов
/ 30 июня 2010

Да. Это работает, только когда текстовое поле пусто из-за этой кодировки. ( if ($ (this) .val (). Length <1)) </strong>

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

Я правильно понял, что вы имеете в виду ??

0 голосов
/ 30 июня 2010

Сначала проверьте, вы забыли поставить «>» при закрытии тега span в html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...