我有这个功能,当选择被更改时,用select中的文本成功填充textarea。
function Favourites()
{
$('select#favourites').change(function() {
var text = $(this).find('option:selected').attr('data-post');
$('textarea#post').text(text);
});
}
问题是如果我更改选择,删除textarea的内容,然后再次更改选择,它就不再填充textarea。
有什么好主意的吗?
答案 0 :(得分:2)
您需要使用.val()
代替.text()
:
$('#post').val(text);
演示:http://jsfiddle.net/jtbowden/HaZWC/
.text()
基本上在标记<textarea></textarea>
之间设置文本,用于设置textarea
的默认值。只要用户没有在文本框中输入任何内容,这就没问题了。但是,就像在html中执行<textarea>My Text</textarea>
一样,默认值总是被用户输入的内容覆盖。因为这是一个输入,.val()
函数设置输入的实际值,它会覆盖默认值。
答案 1 :(得分:2)
更改功能是否在Favourites
功能内?您只需在DOM就绪函数中使用它,如下所示:
$(document).ready(function(){
$('select#favourites').change(function() {
var text = $('option:selected', this).attr('data-post');
$('textarea#post').val(text);
});
});
我也改变了:
.text
到.val
,它将始终正确更改表单字段值find
并替换为在this
内搜索的方法:$('option:selected', this)
这是一个jsFiddle给你:http://jsfiddle.net/sp5L4/2/
答案 2 :(得分:1)
尝试使用on()
(新live()
)之类的内容,同时使用val()
而不是text()
。或许也可以使用data()
$(document).on('change', 'select#favourites', function() {
var text = $(this).find('option:selected').data('post');
$('textarea#post').val(text);
});
答案 3 :(得分:0)
使用'on'方法在整个DOM中附加/侦听事件处理程序。
$('select#favourites').on('change', function(){
var text = $(this).find('option:selected').attr('data-post');
$('textarea#post').text(text);
});