我正在创建Chrome扩展程序,以便用户可以创建待办事项列表。我想这样做,以便用户一旦输入任务,便可以按“ Enter”键提交该任务。这将导致任务下移到下一行。我无法让用户将任务转到下一行。
HTML:
/bin/env "LD_PRELOAD=..." target-prog args
Javascript:
<input type="text" name="newtask" value="" spellcheck="false" placeholder="New Task" id="newtask">
<ul id="tasksUL">
<li>test</li>
</ul>
答案 0 :(得分:1)
将keypress
事件监听器附加到input
元素,而不是ul
。如果输入了按下的键,则获取输入元素的内容,创建新的li
元素,并使用输入的值设置其文本,追加到ul
,然后清除input
元素。 / p>
$(() => {
$('input').on('keypress', function(e) {
if (e.keyCode == 13) {
const newTask = $(this).val();
if (newTask) {
$('#tasksUL').append(`<li>${newTask}</li>`);
$(this).val("");
}
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" name="newtask" value="" spellcheck="false" placeholder="New Task" id="newtask">
<ul id="tasksUL">
<li>test</li>
</ul>
答案 1 :(得分:0)
使用香草javascript,您只需将eventListener
添加到实际的输入元素
收听keydown
事件。
let tasks = document.getElementById('tasksUL');
document.getElementById('newtask').addEventListener('keydown', (e) => {
if(e.key == 'Enter'){
let new_item = document.createElement('li');
new_item.innerText = e.target.value;
tasks.appendChild(new_item);
}
});
答案 2 :(得分:0)
我想您希望您的列表包含用户输入的文本吗?您可以使用jQuery append 方法来实现。
$('#newtask').keydown(function(e){
if (e.which == 13) {
//Construct some html to append:
var newLi = "<li>" + $('#newtask').val() + "</li>";
$('#tasksUL').append(newLi);
}
});