我正在尝试完成以下操作......如果它在一个问题中提出太多要求,那么使用哪些事件的一些简单步骤仍然会有所帮助。
有两个空白的textareas坐在彼此旁边 - 输入和输出。它们之间是两个输入前后。我想在换行符中输入或粘贴单词列表,例如:
melons
peaches
apples
然后使用Before和After输入在每个关键字之前和之后添加单词/短语/符号。因此,如果我在之前输入'buy'并在之后输入'today',则输出文本区域将显示:
buy melons today
buy peaches today
buy apples today
我想在没有任何页面刷新的情况下完成此任务。我们可以假设表单元素的命名如下:
<textarea id="input"></textarea>
<input type="text" id="before" />
<input type="text" id="after" />
<textarea id="output"></textarea>
我一直尝试使用此代码至少让输入文本显示在输出中,但这甚至不起作用:
$(document).ready(function(){
$('#input').keyup(function(e){
$('#output').html($(this).val());
});
});
任何指导都很棒!
答案 0 :(得分:1)
紧凑的:
$("#input,#before,#after").on("keyup", function () {
$("#output").val(
$.map($("#input").val().split("\n"), function (n, i) {
return $("#before").val() + " "+ n + " " + $("#after").val();
}).join("\n"));
});
答案 1 :(得分:0)
这样可以解决问题:
function update_output(){
//Split input by newline
var input_words = $('#input').val().split('\n');
var output_lines = new Array();
//Iterate over each keyword and prepend and append values
$.each(input_words, function(i, word){
output_lines.push($('#before').val()+' '+word+' '+$('#after').val());
});
//Display output in textarea
$('#output').val(output_lines.join('\n'));
}
您只需要选择何时更新输出文本区域,也可以将其绑定,以便每次#input或#before和#after更改时都会更新:
$('#input,#before,#after').on('change',update_output);
答案 2 :(得分:0)
好的,我可以帮助你开始吧。我的答案并不完整,但你可以从这里得到一个很好的主意。注意我写这段代码很容易理解,我没有故意使用复杂的方法。
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$( document ).ready(function() {
$("#input").keypress(function(key){
if(key.which == 13) {
refreshData();
}
});
});
function refreshData() {
var beforeVal = $("#before").val();
var inputLines = $("#input").val().split(/\r\n|\r|\n/g);
var desiredOutputVal = "";
for(var i=0; i<inputLines.length; i++) {
desiredOutputVal += beforeVal + inputLines[i] + "\n";
}
$("#output").val(desiredOutputVal);
}
</script>
</head>
<body>
<form>
<textarea id="input"></textarea>
<input type="text" id="before" />
<input type="text" id="after" />
<textarea id="output"></textarea>
</form>
</body></html>