Специфично для IE - мигающий курсор исчезает при вводе текста типа, если для jquery установлено значение "" - PullRequest
3 голосов
/ 21 апреля 2011

Итак, у меня есть поле ввода типа text, которое имеет значение по умолчанию (YYYY), и когда оно получает фокус, YYYY исчезает:

//inside document.ready
....

 $("#year").focus(function(){
    if(yearVal === "YYYY") {
        $("#year").val("");
    }
});

jQuery.validator.addMethod("numericCheck", function(value, element) {
                return this.optional(element) || /^[0-9]{4}$/.test(value);
        }, "Please enter a valid year");

$("#theForm").validate({
    //set the rules for the field names
    rules: {
       year: {
                  required: true,
                              minlength: 4,
                  numericCheck: true
            }
      },
      messages: {
        year: {
                required: "Please enter the year",
                minlength : "Please enter a valid 4 digit year",
                numericCheck : "Please enter a valid year"
                }           
      },
      errorPlacement: function(error, element) {
            if(element.siblings("div.errorMessage").length)
            {
                element.siblings("div.errorMessage").remove();
            }

            element.parent().append('<div class="errorMessage"></div>');
            element.siblings("div.errorMessage").html(error.html());

            element.parents("tr.inputRow").removeClass("goodInputRow");
            element.parents("tr.inputRow").addClass("errorInputRow");
          },
      onkeyup: false,
      onfocusout: false,
      onclick: false,
      submitHandler: function(form) {
            $(form).find(":submit").attr("disabled", true);
            form.submit(); }
    });


....
//inside theForm

<input type="text" id="year" name="year" style="width: 40px;" maxlength="4" value="YYYY" />

Текст пропал, и курсор должен мигать в поле. Это прекрасно работает в FF, но в IE8 курсор не мигает (и исчез). Фокус остается на поле, и когда пользователь что-то печатает, курсор возвращается, но пока этого не происходит, курсор не появляется.

Я использую jquery 1.4.4 и IE8. Я был в состоянии воссоздать его изолированно (то есть больше ничего не работает на странице)

Я пробовал $ ("# year"). Focus () - без кубиков. Я могу сосредоточиться на каком-то другом поле, чтобы оно появилось там, но я действительно не хочу менять фокус, чтобы это исправить.

Вопрос: Есть ли способ заставить мигать курсор после очистки YYYY в IE8?

EDIT: Спасибо за ответы - я изменил, чтобы включить больше соответствующих деталей.

Ответы [ 2 ]

5 голосов
/ 05 мая 2011

Попробуйте это:

$('#year').focus(function () {
    if ($(this).val() === "YYYY") {
        $(this).val("");
        $(this).select();
    }
});

Это хорошо сработало для меня в IE8:)

1 голос
/ 21 апреля 2011

Я только что проверил следующий код в FF4.0 и IE8, 7 и 6. У меня отлично работает ...

JavaScript:

  $('#year').focus(function () {
      if ($(this).val() === "YYYY") {
          $(this).val("");
      }
  });

HTML:

<input type="text" id="year" value="YYYY" />

Ваш пример слишком раздет.Например, откуда берется yearVal?Также, как упоминалось в jball, ваша логика состояния неверна

РЕДАКТИРОВАТЬ: (проверено в Win2008 Server 64bit)

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