2013-06-14 2 views
2

В настоящее время я использую Placeholder Polyfill by Mathias Bynens в сочетании с jquery.validate plugin (v1.11.1) и нахожусь в неутешительной ошибке с помощью Internet Explorer 9.Jquery Validate Несовместим с Полиполком-заполнителем? [IE9 Bug]

я не могу получить необходимую проверку поля работать на моих type="password" полях, если они имеют непустые placeholder атрибута определен. После ввода значения и текста заполнителя исчезает оставшаяся проверка достоверности.

Live Demo of this code can be found here

JS

$('input').placeholder(); // init placeholder plugin 
signupFormValidator = $('form').validate(); // init validation 

HTML

<form> 
    <input class="required" type="text" name="test" id="test" placeholder="test"><br> 
    <input class="required" type="password" name="password" id="password" placeholder="password"><br> 
    <input class="required" type="password" name="confirm" id="confirm" placeholder="confirm"><br> 
    <input type="submit"> 
</form> 
+0

Вы когда-нибудь находили решение этой проблемы? – creativetim

+0

К сожалению, нет чистого решения, но я закончил работу с некоторыми JS. Ознакомьтесь с моим новым ответом ниже. –

+0

@creativetim FYI - только что обнаружил, что мой взлом/исправление нарушено в FF. Вернуться к доске для рисования. –

ответ

0

редактировать: это исправление вводит ошибки в Firefox. См. Комментарий ниже.


Чтобы справиться с этим, я в конечном итоге, используя некоторые довольно Hacky JQuery я испек сам:

$('#password, #confirm').keyup(function() { 
    var $input = $(this); 
    if ($input.attr('type') === 'text') { 
     if ($input.val().length > 0) { 
      $input.attr('type', 'password'); 
     } 
    } else if ($input.val() === "") { 
     $input.attr('type', 'text'); 
    } 
}); 

Что это делает, устанавливает поле type в «текст», а не «пароль» , эффективно устраняя эту неприятную проблему с заполнителем.

Незначительная проблема: первый символ пароля отображается кратким текстом, когда вводится текст на вход.

+0

FYI, только что обнаружил, что это (возможно) вводит ошибку (пока только воспроизведенную в Firefox). При быстром вводе пароля в поле (ы) пароля курсор иногда заканчивается посредине слова. Я отправлю обратно с дальнейшими выводами/решениями. –