使用 JQuery 添加列表项时出现问题
Issue with adding a list item using JQuery
我有这段代码,它之前就可以工作了。然后我开始将代码放入小函数中,现在它不起作用。我可以看到它正在添加列表项,但也会自动删除它。请指导 -
<body>
<header>
<h1>Your Ration List</h1>
</header>
<div id="container">
<form class="shopList-form">
<input id="add" type="text" placeholder="Type new item here" />
</form>
<ul id="item_list">
<li id="base" class="hidden">
<form>
<input class="check" type="checkbox" /> <span class="item">Item</span>
</form>
<button class="delete_item hidden"></button>
</li>
</ul>
JQuery 代码 -
$(document).ready(function () {
/* Get user input */
getItem();
function getItem() {
$('input#add').keydown(function (event) {
if (event.keyCode == 13) {
addItem();
}
});
}
function addItem() {
$('li#base').clone(true).appendTo('#item_list').removeAttr('id').removeClass('hidden');
$('ul#item_list>li:last>form>span').text($('input#add').val());
$('input#add').val("");
}
});
完整的代码可以在这个JSFiddle找到 -
http://jsfiddle.net/varunksaini/Zjxq5/8/
由于它是一个表单,按 Enter 不仅可以触发您的函数,还可以提交表单(因为它没有提交给自身的操作),因此页面实际上会刷新,这就是新<li>
消失的原因。
您需要做的就是将return false
添加到 getItem
.
见小提琴:http://jsfiddle.net/Zjxq5/9/
脚本遇到的问题是您正在使用表单,当您按 Enter 时,它会将表单提交到服务器并重新加载页面。您可以使用preventDefault()
函数来避免这种情况。
$('input#add').keydown(function (event) {
if (event.keyCode == 13) {
event.preventDefault();
addItem();
}
});
示例:http://jsfiddle.net/rdnKq/1/
相关文章:
- 神秘的ajax json请求问题jQuery
- 这个代码出了什么问题?(Jquery)
- 图片库问题jquery
- SetInterval 60秒倒计时问题jQuery
- 这行代码出了什么问题?(jQuery.parseJSON)
- onclick属性的引号过多的问题 - jQuery,HTML
- IE8 问题 - jQuery 调整页面大小时导航 html
- nivo滑块和光滑的轮播无法协同工作的问题 - jquery
- Google Charts - hAxis 上的数字/字符串问题(Jquery ajax JSON 数据)
- window.位置问题JQuery代码
- 延迟对象使用问题jQuery
- 文件订单加载问题-jquery
- ie7问题:jquery点击编辑不工作
- jquery.mouseenter()问题jquery.mouseleave()和子元素
- Webkit问题:jQuery没有定义
- 拖放问题jquery
- 检索按钮值问题Jquery
- 选择所有复选框问题(jQuery)
- 过滤逻辑问题jQuery
- 逻辑运算符OR问题:jQuery