用于替换占位符文本的函数

时间:2013-12-04 09:00:28

标签: javascript jquery input 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();
            });
        }
    }
})();

1 个答案:

答案 0 :(得分: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>