Javascript 从“选择”对话框中的选定项更改文本区域的文本
我有一个函数,当选择被更改时,它可以成功地用选择中的文本填充文本区域Javascript 从“选择”对话框中的选定项更改文本区域的文本,javascript,jquery,Javascript,Jquery,我有一个函数,当选择被更改时,它可以成功地用选择中的文本填充文本区域 function Favourites() { $('select#favourites').change(function() { var text = $(this).find('option:selected').attr('data-post'); $('textarea#post').text(text); }); } 问题是,如果我更改选择,删除文本区域的内容,然后再次更改选择,它将不再填
function Favourites()
{
$('select#favourites').change(function() {
var text = $(this).find('option:selected').attr('data-post');
$('textarea#post').text(text);
});
}
问题是,如果我更改选择,删除文本区域的内容,然后再次更改选择,它将不再填充文本区域
知道为什么吗?使用“on”方法在整个DOM中附加/侦听事件处理程序
$('select#favourites').on('change', function(){
var text = $(this).find('option:selected').attr('data-post');
$('textarea#post').text(text);
});
使用“on”方法在整个DOM中附加/侦听事件处理程序
$('select#favourites').on('change', function(){
var text = $(this).find('option:selected').attr('data-post');
$('textarea#post').text(text);
});
您需要使用.val而不是.text:
演示:
.text本质上是设置标记之间的文本,设置textarea的默认值。只要用户没有在文本框中键入任何内容,这就可以了。但是,就像在html中处理我的文本一样,默认值总是被用户输入的内容覆盖。由于这是一个输入,.val函数设置输入的实际值,这将覆盖默认值。您需要使用.val而不是.text:
演示:
.text本质上是设置标记之间的文本,设置textarea的默认值。只要用户没有在文本框中键入任何内容,这就可以了。但是,就像在html中处理我的文本一样,默认值总是被用户输入的内容覆盖。因为这是一个输入,.val函数设置输入的实际值,这将覆盖默认值。尝试在新的live上使用类似的内容,同时使用val而不是文本。可能也能使用数据
尝试在新的live上使用类似的内容,同时使用val而不是文本。可能也能使用数据
更改函数位于收藏夹函数内是否有原因?您只需在DOM就绪函数中使用它,如下所示:
$(document).ready(function(){
$('select#favourites').change(function() {
var text = $('option:selected', this).attr('data-post');
$('textarea#post').val(text);
});
});
我也改变了:
.text转换为.val,它将始终正确更改表单字段值
已删除“查找”,并替换为在以下内容中搜索的方法:$“选项:已选定”,此
这里有一个jsFiddle供您参考:是否有理由将change函数放在favorites函数中?您只需在DOM就绪函数中使用它,如下所示:
$(document).ready(function(){
$('select#favourites').change(function() {
var text = $('option:selected', this).attr('data-post');
$('textarea#post').val(text);
});
});
我也改变了:
.text转换为.val,它将始终正确更改表单字段值
已删除“查找”,并替换为在以下内容中搜索的方法:$“选项:已选定”,此
这里有一个jsFiddle给你:为什么你的选择器选择Fabourites和textareapost?表示选择一个唯一的id,因此您不需要在id前面加上select或textarea。另外,查看您所说的select和textarea元素的html可能会有所帮助。@sgarrett:在这种情况下,html是不相关的,因为他使用了错误的方法来设置值。请参阅下面我的答案。@sgarrett如果您知道id是什么,它可以帮助提高可读性on@JeffB.val是正确的修复程序,但OP应了解选择器及其使用。看见将文本放在前面是没有意义的。@a如果您试图提高可读性,请使用更好的id。将文本放在前面很可能会使需要更改代码的其他人感到困惑。为什么您的选择器选择Fabourites和textareapost?表示选择一个唯一的id,因此您不需要在id前面加上select或textarea。另外,查看您所说的select和textarea元素的html可能会有所帮助。@sgarrett:在这种情况下,html是不相关的,因为他使用了错误的方法来设置值。请参阅下面我的答案。@sgarrett如果您知道id是什么,它可以帮助提高可读性on@JeffB.val是正确的修复程序,但OP应了解选择器及其使用。看见将文本放在前面是没有意义的。@a如果您试图提高可读性,请使用更好的id。将文本放在前面很可能会使需要更改代码的其他人感到困惑。我从DOM就绪函数调用Favorites函数,它有助于保持事物的有序性。我从DOM就绪函数调用Favorites函数,它有助于保持事物的有序性。哈,好吧,取决于我猜的浏览器?哈,好吧,取决于我猜的浏览器?