javascript - 渐进式输入占位符

标签 javascript html css reactjs

我很好奇如何在 CSS/Javascript 中实现渐进式/动态占位符,如下例所示。 enter image description here

附言。我知道我们需要在发布到 SO 之前展示某种工作/努力。但我有点搞不清楚要搜索什么来获取相关信息

最佳答案

设置<input placeholder=""属性使用 setTimeoutsetInterval用于动画循环。

一个更简单的版本只是使用 setTimeout 发送一堆 future 更新的垃圾邮件而不是动画循环,因为我认为它更简单 - 尽管这种方法无法扩展。

var finalPlaceholderText = "foo bar baz";
var input = document.getElementById( 'idOfTextBox' );    

var placeholderIndex = 0;
for( var i = 0; i < finalPlaceholderText.length; i++ ) {

    setTimeout( 
        function( length ) {
            input.placeholder = finalPlaceholderText.substring( 0, i );
        }
    , i * 500, i );
}

注意你需要传递 length ( i ) 作为参数进入 setTimeout回调,因为 JavaScript 的闭包将使用 for 之后的 last 值循环完成而不是 setTimeout 时使用的值每次都被调用。

使用 setTimeout -循环,它看起来像这样(注意缺少 for 循环):

var finalPlaceholderText = "foo bar baz";
var input = document.getElementById( 'idOfTextBox' );

function incrementPlaceholderText( i ) {
    input.placeholder = finalPlaceholderText.substring( 0, i );

    if( i < finalPlaceholderText.length ) {
        setTimeout( incrementPlaceholderText, 500, i + 1 );
    }
}

incrementPlaceholderText( 0 );

或更一般地(以支持多个输入元素和不同占位符文本的方式):

function incrementPlaceholderText( input, finalText, i ) {
    input.placeholder = finalText.substring( 0, i );

    if( i < finalText.length ) {
        setTimeout( incrementPlaceholderText, 500, input, finalText, i + 1 );
    }
}

incrementPlaceholderText( document.getElementById( 'idOfTextBox1' ), "foo bar baz", 0 );
incrementPlaceholderText( document.getElementById( 'idOfTextBox2' ), "foo bar baz qux", 0 );

关于javascript - 渐进式输入占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49768201/

相关文章:

javascript - 如何在 VS Code 中使用 JavaScript 私有(private)字段?

javascript - 要更新 MongoDB 上文档中的单个字段,最好的方法是什么?更新或修补feathersjs中的钩子(Hook)

jquery - 使用 Bootstrap 使输入/表单栏响应

javascript - 没有id时如何获取列表事件元素的索引

php - 如何在弹出窗口中显示php mysql选择值

JavaScript 数组解构

javascript - 无法使用 JavaScript 打开 chrome 浏览器

javascript - 如果某些手机的分辨率高于计算机,我如何使用@media 查询?

css - 非常不寻常的边距总是出现在 Internet Explorer [CSS]

javascript - jquery animate() 函数没有在表单上触发