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

时间:2012-04-06 10:16:13

标签: jquery html html5

我正在构建一个允许企业通过hisname.mydomain.com访问其业务的应用程序。我现在正在构建注册表单。

无论如何,我今天遇到了squarespace并且他们有一个实际上就像我想要的注册表单。如果您浏览到squarespaces site并点击“免费试用”,则会在模式弹出窗口中显示其注册表单。

弹出窗口看起来像。 username的输入框有一个占位符文本username.squarespace.com

当您开始输入用户名时,.squarespace.com仍然可见。

如何复制此行为?

enter image description here

3 个答案:

答案 0 :(得分:1)

他们可能会在您输入时动态地将.squarespace.com添加到用户名。

您可以尝试使用 onKeyUp 事件将文字添加到文本框中,如下所示:

<input type="text" id="fname" onkeyup="this.value = this.value.replace('.hello.com', '') + '.hello.com'" />

答案 1 :(得分:1)

Hiya如果有人有同样的问题,请设置为答案:)以及将来参考,因为您似乎最终可能会使用该解决方案:http://jsfiddle.net/NXAWW/

这将在文本框中保留部分水印,就像其他页面中的样本一样!有一个好的,

关键是这个

.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',''));
    }
});
​

答案 2 :(得分:0)

当您键入用户名时,初始文本覆盖将替换为第二个,在您键入时动态定位。只需添加一个onkeyup事件处理程序,它可以计算当前输入文本的宽度并相应地定位叠加层。

网站的css不是很精彩,看看当你输入更大的用户名时会发生什么:

Create your website

但是,可以通过将overflow: hidden添加到父元素来轻松解决此问题。