Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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 如何用jQuery替换textarea元素中的文本_Javascript_Jquery_Textarea - Fatal编程技术网

Javascript 如何用jQuery替换textarea元素中的文本

Javascript 如何用jQuery替换textarea元素中的文本,javascript,jquery,textarea,Javascript,Jquery,Textarea,我有一些元素和一些数据。我需要为它创建更改字段。所以我使用textarea来更改这个元素中的文本。一切都很好,但当我想用文本语言添加条件时,有些东西不正常。。。这是我的代码和它的一些fiddle()。谢谢你的帮助 <div class="textchange_box"> <span class="desc">data<br>data </span> <textarea name="desc" class="textfi

我有一些元素和一些数据。我需要为它创建更改字段。所以我使用textarea来更改这个元素中的文本。一切都很好,但当我想用文本语言添加条件时,有些东西不正常。。。这是我的代码和它的一些fiddle()。谢谢你的帮助

<div class="textchange_box">
    <span class="desc">data<br>data
    </span>
    <textarea name="desc" class="textfield"></textarea>
    <span class="change">change</span>
    <span class="save">save</span>
</div>​ 

数据
数据 改变 拯救 ​
和jquery:

$(".change").live('click', function () {
    $(this).prev('.textfield').css('display','block');
    $(this).prevAll('.desc').css('display','none');
    $(this).next('.save').css('display','block');
    $(this).css('display','none');
});
$(".save").live('click', function () {
    var default_value = $(this).prev('.desc').text().replace(/\r\n|\r|\n/g,"<br/>");
    var actual_value = $(this).prev('.textfield').text().replace(/\r\n|\r|\n/g,"<br />");
    $(this).prevAll('.textfield').css('display','none');
    $(this).prev('.change').css('display','block');
    $(this).css('display','none');
    if (actual_value.length < 0) {
        $(this).prev('.desc').replaceWith('<span class="desc">' + default_value +'</span>');
    }
    else if (actual_value.length > 0) {
        $(this).prev('.desc').replaceWith('<span class="desc">' + actual_value +'</span>');
    }
});
$(“.change”).live('click',函数(){
$(this.prev('.textfield').css('display','block');
$(this.prevAll('.desc').css('display','none');
$(this).next('.save').css('display','block');
$(this.css('display','none');
});
$(“.save”).live('click',函数(){
var default_value=$(this).prev('.desc').text().replace(/\r\n |\r |\n/g,“
”); var实际值=$(this).prev('.textfield').text().replace(/\r\n |\r |\n/g,“
”); $(this.prevAll('.textfield').css('display','none'); $(this.prev('.change').css('display','block'); $(this.css('display','none'); 如果(实际_值。长度<0){ $(this).prev('.desc')。替换为(''+默认值+''); } 否则如果(实际_值.length>0){ $(this).prev('.desc')。替换为(''+实际值+''); } });
替换以下行:

if (actual_value.length < 0) {
因此,这将是:

$(this).prevAll('.desc').replaceWith('<span class="desc">' + actual_value +'</span>');
$(this.prevAll('.desc')。替换为(''+实际值+'');


基本上,最常见的错误是您认为
.prev()
将遍历所有以前的同级,而为此,您必须使用
preval()
替换以下行:

if (actual_value.length < 0) {
因此,这将是:

$(this).prevAll('.desc').replaceWith('<span class="desc">' + actual_value +'</span>');
$(this.prevAll('.desc')。替换为(''+实际值+'');


基本上,最常见的错误是您认为
.prev()
将遍历所有以前的同级,而为此您必须使用
preval()

您是否尝试使用
.val()
而不是
.text()
?与您的问题无关,但请注意,使用跨距作为链接是一种可访问性故障,因为它们不适用于不使用或不能使用鼠标或其他定点设备的用户。thx我将更改它,但现在我需要解决此问题…您是否尝试使用
.val()
而不是
.text()
?与您的问题无关,但请注意,使用跨距作为链接是一个可访问性故障,因为它们不适用于不使用或不能使用鼠标或其他定点设备的用户。thx我将更改它,但现在我需要修复此问题…甚至
==0
,因为它不能是否定的。这不会改变任何事情。我更深入地查看了你的小提琴,发现了更多的错误,我用它们更新了我的答案,还发布了一个可用的小提琴,请查看:-)可爱,thx人它工作得很好,但我有问题,在我编辑它们时,它们会返回到一行…甚至
==0
,因为它不能是负面的。这不会改变任何事情。我更深入地看了你的小提琴,发现了更多的错误,我已经用它们更新了我的答案,还发布了一个工作小提琴,请查看:-)可爱,thx人它工作完美,但我有问题,断线,他们返回到一行,当我编辑他们。。。
$(this).prev('.desc').replaceWith('<span class="desc">' + actual_value +'</span>');
$(this).prevAll('.desc').replaceWith('<span class="desc">' + actual_value +'</span>');