如何保留textarea内容中的编辑?

时间:2014-09-25 20:55:55

标签: jquery textarea

我有一些复选框可以在文本区域生成文本。我希望用户能够在区域内添加或编辑生成的文本,然后继续添加更多自动生成的文本。

我无法“保存”所做的任何编辑。我似乎可以通过$('textarea').change(function(){ set text variable to textarea value.构造侦听textarea中的更改,但是当选中其他复选框时,我会一直返回原始值。

我的HTML:

<input type='checkbox' id='line1'>Some text
<br>
<input type='checkbox' id='line2'>more text
<br>
<input type='checkbox' id='line3'>even more text
<br>
<textarea id='output' placeholder='1st textarea' rows=10 cols=20></textarea>
<br>

我的文本生成代码的相关位:

var texts = {
    line1: 'some text',
    line2: 'more text',
    line3: 'even more text'
};

// temporary holder for checkbox id
var part_choice = null;

// new textarea variables
var first_text = $('#output').val();

// old text variable
var text_old = '';


// fill texts in the textbox
function print_text() {
    if (part_choice !== null) {
        first_text += texts[part_choice] + '\n';
        part_choice = null;
        $('#output').val(first_text);
    }
}

// Retain any manual edits within textarea
$('#output').change(function () {
    first_text = $('#output').val();
});

$('input:checkbox').change(function () {
    if ($(this).is(':checked')) {
        part_choice = $(this).attr('id');
        text_old = first_text;
        print_text();
    } else {
        var del = $(this).attr('id');
        text_old = first_text.replace(texts[del] + '\n', '');
        first_text = text_old;
        $('#output').val(text_old); // undo function, textarea = prior text
    }
});

现在修复了错误代码 - 后续问题:我想使用jquery和按键触发事件来模拟手动编辑。我能够执行模拟textarea中的'空格键'的模拟。这应该在选择下一个项目之前保存textarea内容,但事实并非如此。只有物理按键似乎有效吗?是什么给了什么?

2 个答案:

答案 0 :(得分:1)

对不起,我刚刚在我的部分发现了一个错字,以保留任何手动编辑。

$('#output').change(function () {
    **frst**_text = $('#output').val();
});

显然应该阅读

$('#output').change(function () {
    **first**_text = $('#output').val();
});

修复它。

答案 1 :(得分:0)

frst_text = $(&#39; #output&#39;)。val();

应阅读:

first_text = $('#output').val() + "\n";