6

当输入成为焦点时,是否有一个简单的解决方案来更改占位符文本?例如:

<input type="text" placeholder="Join our mailing list!">

会变成这样:

<input type="text" placeholder="enter your email address...">

当输入处于活动状态时。

4

3 回答 3

21
$('input').focus(function() {
    $(this).attr('placeholder', 'enter your email address...')
}).blur(function() {
    $(this).attr('placeholder', 'Join our mailing list!')
})

http://jsfiddle.net/ByLGs/

于 2012-09-21T17:51:20.027 回答
2

您已将此标记为“jQuery”,因此我假设您愿意使用它。这是一个简单的方法:

<input type="text" placeholder="Join our mailing list!" title="enter your email address...">​
$('input').on('focus', function(){
    $(this).data('placeholder', $(this).attr('placeholder')); // Store for blur
    $(this).attr('placeholder', $(this).attr('title'));
}).on('blur', function(){
    $(this).attr('placeholder', $(this).data('placeholder'));
});​

演示:http: //jsfiddle.net/m6j8m/

这可以缩短,但你明白了。这样您就不必跟踪 javascript 中的属性值,它都在 HTML 中,因此它是一种万能的解决方案。如果 usingtitle不适合您的需求,您可以使用data-属性或其他属性。

于 2012-09-21T17:53:28.227 回答
0

您可以使用自定义属性“数据”来交换内容:

<input type="text" placeholder="Join our mailing list!" data-focus-placeholder="enter your email address..." class="focus-placeholder">​

然后,您需要一个 JavaScript 函数来交换 focus 和 focusout 的属性

jQuery('.focus-placeholder').on('focus focusout',function(){

    focusPlaceholder    = jQuery(this).attr('data-focus-placeholder');
    placeholder         = jQuery(this).attr('placeholder');

    jQuery(this).attr('placeholder', focusPlaceholder);
    jQuery(this).attr('data-focus-placeholder', placeholder);
});

更多关于数据属性:https ://www.w3schools.com/tags/att_global_data.asp

于 2019-04-26T17:25:12.783 回答