jQuery清除textarea文本时会删除占位符。

3
我有一个带有文本区域的Bootstrap模态框。每次打开模态框时,需要清除文本区域中的任何先前文本,以便使其保持新鲜状态。
问题是,第一次清除文本时,字段上的占位符也被删除了。
我正在使用$('textarea').val('')来清除文本。
链接:http://jsfiddle.net/dkRS8/1/

在Chrome中对我来说完全正常运行。 - adeneo
你使用的是哪个浏览器? - Rob
似乎第一次使用时没问题,但是稍后关闭一次后,占位文本就消失了。不确定他的意思是否如此。(按ESC键关闭该对话框) - Selvakumar Arumugam
他的错误出现在打开模态框、开始输入内容然后关闭它时。下次打开模态框时,文本区域已经正确地清空了之前的值,但却没有显示占位符。 - koopajah
它在Firefox中不起作用。 - BadHorsie
显示剩余2条评论
4个回答

2
您需要触发 blur 事件才能再次出现占位符。它仅在隐藏事件期间有效,因此当它再次出现时,占位符会被放回去。
$('#modal').on('hide', function() {
    $(this).find('textarea').val('').blur();
});

使用jsfiddle进行开发

编辑: 我错了,只需按Martin在他的答案中解释的那样将事件从show更改为hide,即可在没有模糊的情况下工作。他使用了事件shown


2

当您注册“shown”事件而不是“show”事件时,它会起作用。

$(document).ready(function() {

    $('#modal').on('shown', function() {
        $(this).find('textarea').val('');
    });

});

Bootstrap文档中提到“shown”事件:“当模态窗口对用户可见时触发此事件(将等待CSS过渡完成)”。 - Martin
不清楚IE 9,似乎完全忽略占位符 :( - Martin

0
尝试
$(document).ready(function() {
    $('#modal').bind('hide',function(){
        $('textarea',this).val('')
    })
});

多浏览器,jQuery-UI事件标准


-1

在IE的各个版本中.. 只有IE 10支持占位符....所以不要在旧版本的IE上尝试这个东西....

但是其他浏览器,比如firefox,Chrome,Opera...都支持这个属性...

尝试下面的代码它会帮助你...

更新后的fiddle : http://jsfiddle.net/dkRS8/6/

$(document).ready(function() {

    $('#modal').on('show', function() {
        var ele = $(this).find('textarea');
        ele.val('');
    });

});

你移除了它的占位符,那不是他想要的。 - koopajah
@koopajah:哦,好的,我想他要求删除占位符...因为他的代码对我来说运行良好...所以只有我想错了... - Pandian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接