【发布时间】:2015-03-30 22:44:58
【问题描述】:
参见 jsfiddle 示例...http://jsfiddle.net/nnmEY/21/
目标...
通过选择菜单或直接输入修改 textarea 并将 textarea 值传递给 div。
问题...
1.) 下面示例底部的脚本在 jsfiddle 中可以正常工作,但在示例中却不行。
2.) 我还试图找出第一个脚本的最佳逻辑,即在将值从 .ta(textarea) 传递到 .tatx(div text) 时如何将“\n”转换为“br”。当您在选择菜单中选择三个或更多选项时,您可以看到问题。我正在考虑 replaceWith() 但我无法使其工作。
非常感谢任何帮助。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<style>
li {margin-bottom:7px; background:#DDD; padding:5px;}
#par {width:350px;}
.tatx {color:#C00;}
</style>
<div id="par">
<ul>
<li>
Select an option, then, select another option.<br>
<select class="sl">
<option value="item 1">option 1</option>
<option value="item 2">option 2</option>
<option value="item 3">option 3</option>
</select><br>
<p>Selected options values are passed to textarea<br>
<textarea class="ta"></textarea>
<p>Textarea value is passed to div as text
<div class="tatx">Div Text</div>
</li>
<li>
Select an option, then, select another option.<br>
<select class="sl">
<option value="item 1">option 1</option>
<option value="item 2">option 2</option>
<option value="item 3">option 3</option>
</select><br>
<p>Selected options values are passed to textarea<br>
<textarea class="ta"></textarea>
<p>Textarea value is passed to div as text
<div class="tatx">Div Text</div>
</li>
<li>
Select an option, then, select another option.<br>
<select class="sl">
<option value="item 1">option 1</option>
<option value="item 2">option 2</option>
<option value="item 3">option 3</option>
</select><br>
<p>Selected options values are passed to textarea<br>
<textarea class="ta"></textarea>
<p>Textarea value is passed to div as text
<div class="tatx">Div Text</div>
</li>
</ul>
</div>
<script>
$(document).ready(function(){
$('li > .sl').on('change', function() {
var taVal = $(this).siblings().find('.ta').val();
var tatxVal = $(this).siblings('.tatx').html()
var slVal = $(this).val() + '\n';
var slHtml = $(this).val() + '<br>';
$(this).siblings().find('.ta').val(slVal + taVal);
$(this).siblings('.tatx').html(slHtml + taVal);
});
});
</script>
<script>
$(document).ready(function(){
$('li > .ta').keyup(function(){
$(this).next('.tatx').html($(this).val());
})
});
</script>
【问题讨论】:
-
.ta不是.sl的兄弟 -
@RichardA 他的代码在哪里说
.ta和.sl是兄弟姐妹?.find('.ta')寻找后代,而不是兄弟姐妹。 -
@Barmar 哦,是的,也是。我错过了。
-
如果它适用于 jsfiddle 但不适用于您的网站,则您必须做一些不同的事情。但是我们无法知道您在做什么不同。
-
在jsfiddle例子中;如果您在 textarea 中输入,则会更新 div。在我发布的示例代码中,当您输入文本区域时,它不会更新 div,您可以看到脚本是相同的。为了澄清......我想使用选择菜单或直接将文本输入到文本区域来更新 DIV 文本。选择菜单有效,在 textarea 中手动输入数据无效。
标签: jquery this argument-passing replacewith