Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从“选择”对话框中的选定项更改文本区域的文本_Javascript_Jquery - Fatal编程技术网

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函数,它有助于保持事物的有序性。哈,好吧,取决于我猜的浏览器?哈,好吧,取决于我猜的浏览器?