我有一些复选框可以在文本区域生成文本。我希望用户能够在区域内添加或编辑生成的文本,然后继续添加更多自动生成的文本。
我无法“保存”所做的任何编辑。我似乎可以通过$('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内容,但事实并非如此。只有物理按键似乎有效吗?是什么给了什么?
答案 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";