2013-12-04 5 views
0

Мы создали функцию, предназначенную для замены текста заполнителя в полях, который должен выполняться, если браузер не поддерживает атрибут placeholder (например, ранние браузеры IE).Функция для замены текста заполнителя

Однако, похоже, что это не сработало, и мы не можем понять причину. Не могли бы вы понять, что случилось?

setup_placeholders = (function() { 
    $.support.placeholder = false; 
    test = document.createElement('input'); 
    if('placeholder' in test) { 
     $.support.placeholder = true; 
     return function() {} 
    } else { 
     return function(){ 
      $(function() { 
       var active = document.activeElement; 
       $('form').delegate(':text', 'focus', function() { 
        var _placeholder = $(this).attr('placeholder'), 
         _val = $(this).val(); 
        if (_placeholder != '' && _val == _placeholder) { 
         $(this).val('').removeClass('hasPlaceholder'); 
        } 
       }).delegate(':text', 'blur', function() { 
        var _placeholder = $(this).attr('placeholder'), 
         _val = $(this).val(); 

        if (!_placeholder && (_val == '' || _val == _placeholder)) { 
         $(this).val(_placeholder).addClass('hasPlaceholder'); 
        } 
       }).submit(function() { 
        $(this).find('.hasPlaceholder').each(function() { $(this).val(''); }); 
       }); 
       $(':text').blur(); 
       $(active).focus(); 
      }); 
     } 
    } 
})(); 
+0

Вы проверили https://github.com/ginader/HTML5-placeholder-polyfill – elclanrs

ответ

0

JQuery подход:

(function($) { 
    var safe = []; 
    $.fn.store = function() { 
     safe[$(this).attr('id')] = $(this).val(); 
     $(this).click(function() {if ($(this).val() == safe[$(this).attr('id')]) $(this).val('');}); 
     $(this).blur(function() {if ($(this).val() == '') $(this).val(safe[$(this).attr('id')]);}); 
    }; 
}(jQuery)); 

Использование:

<input type="text" id="txt_field" name="txt_field" value="Placeholder"> 
<script> 
    $('#txt_field').store(); 
</script> 
Смежные вопросы