占位符在焦点上保持可见

Placeholder remains visible on focus

本文关键字:焦点 占位符      更新时间:2023-09-26

我希望我的<input>元素具有占位符文本,该文本在输入具有焦点(并且为空)时保持可见。然而,我不能使用实际的placeholder属性,因为它只在输入没有焦点时显示在IE10和Safari中,并且在旧版本的IE中不支持。什么是跨浏览器解决方案,最好不要使用jquery(因为我没有其他理由使用它)?

如果您可以使用jQuery,这里有一个选项

演示http://jsfiddle.net/kevinPHPkevin/FdjJv/8/

$(function()
{
  $('input').each(function() 
  {
     $(this).val($(this).attr('holder'));
  });
  $('input').focus(function()
  {
    if($(this).attr('holder')==$(this).val())
    {
      $(this).val('');
    }
  });
  $('input').focusout(function()
  {
     if($.trim($(this).val())=='')
     {
       var holder = $(this).attr('holder');
       $(this).val(holder);
     }
  });
});

对于完整的浏览器支持,您可以使用库,例如http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html

已编辑

我推荐一个jQuery插件,然后你可以将其分配给你的输入

演示http://jsfiddle.net/kevinPHPkevin/5j55m/136/

<input type='text' placeholder='this is a test' />
<input type='password' placeholder='testing password' />

使用jQuery找到了此解决方案。。http://jsfiddle.net/NXAWW/


为用户输入文本时保持可见的输入创建html水印文本:

关键是这个

.keyup(function(){
    var $input = $(this);
    if ($input.val().trim() != '') {
        $placeholder.val($input.val().trim() + $input.attr('placeholder').replace('test',''));
        //$placeholder.val('');
    } else {
        $placeholder.val($input.val().trim() + $input.attr('placeholder').replace('test',''));
    }
});

完整Jquery代码

// Create placeholder input to serve as background
var $test = $('#test');
var $placeholder = $test.clone().removeAttr('id').removeAttr('placeholder').addClass('placeholder').val($test.attr('placeholder'));
var $container = $('<span class="placeholder-container"></span>');
$container.insertAfter($test).append($test).append($placeholder);
// Basic styling
$container.css({
   position: 'relative'
});
$test.css({
    position: 'absolute',
    left: 0,
    top: 0,
    zIndex: 100,
    backgroundColor: 'transparent',
    borderColor: 'transparent'
});
$placeholder.css('color', 'transparent');
// Behavior for focus and blur to achieve the visual effect
$test.focus(function(){
   var $input = $(this);
   var $placeholder = $('.placeholder', $input.parent());
   $placeholder.css('color', '#e0e0e0');
}).blur(function(){
   var $input = $(this);
   var $placeholder = $('.placeholder', $input.parent());
   if ($input.val() == '')
       $placeholder.css('color', 'transparent');
}).keyup(function(){
    var $input = $(this);
    if ($input.val().trim() != '') {
        $placeholder.val($input.val().trim() + $input.attr('placeholder').replace('test',''));
        //$placeholder.val('');
    } else {
        $placeholder.val($input.val().trim() + $input.attr('placeholder').replace('test',''));
    }
});