Подтвердить что ты не робот

Val() возвращает значение Placeholder вместо фактического значения в IE8,9, когда поле пустое

Атрибут Placeholder, показанный ниже, отлично работает в firefox, но если val() вызывается, когда поле пусто, оно возвращает значение placeholder вместо фактического значения в тексте.

JSFiddle - http://jsfiddle.net/Jrfwr/2/

<input id="tlt" type="text" placeholder="Enter Title" />

ОАО

function placeHolderFallBack() {
   if ("placeholder" in document.createElement("input")) {
       return;
   }
   else {
       $('[placeholder]').focus(function () {
           var input = $(this);
           if (input.val() == input.attr('placeholder')) {
               input.val('');
               input.removeClass('placeholder');
           }
       }).blur(function () {
           var input = $(this);
           if (input.val() == '' || input.val() == input.attr('placeholder')) {
               input.addClass('placeholder');
               input.val(input.attr('placeholder'));
           }
       }).blur();
       $('[placeholder]').parents('form').submit(function () {
           $(this).find('[placeholder]').each(function () {
               var input = $(this);
               if (input.val() == input.attr('placeholder')) {
                   input.val('');
               }
           })
       });
   }
}
4b9b3361

Ответ 1

Вы можете переопределить метод val(), но мне не нравится это делать: D

Я написал простую функцию pVal(), которая выполняет задание

$.fn.pVal = function(){
    var $this = $(this),
        val = $this.eq(0).val();
    if(val == $this.attr('placeholder'))
        return '';
    else
        return val;
}
$(function(){
    alert($('input').val())
    alert($('input').pVal())
});​

http://jsfiddle.net/W7JKt/3/

Ответ 2

В коде JSFiddle вы получаете значение текстового поля в событии BUTTON CLICK... и ваш код, который проверяет, совпадает ли текущее значение текстового поля с заполнителем в событии FORM SUBMIT.

Итак... проблема в том, что событие BUTTON CLICK выполняется перед событием FORM SUBMIT.

В этом коде показан пример получения правильного значения

Надеюсь, что это поможет.