jquery在使用回车键输入文本时动态添加具有值的表行
jquery to dynamically add table row with value upon entering text input using enter key
好的。。这是我在这里的第一个问题。javascript非常新,所以希望我能得到很好的对待(交叉手指)。。。我这里有一个html代码:
<table width="500" border="1">
<tr>
<td>No.</td>
<td>Name</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
<br />
Enter Name:
<input type="text" name="name" id="name" />
我试图让我在输入"name"中输入的任何值直接作为html表中的新行,并在"No."列中使用"enter"键而不是单击按钮,附加一个连续编号(1,2,3等)。同时,"name"中的值将被清除并集中,以便为下一个值入口做好准备。
吉普森,
作为javascript的新手,我将把这句话更多地作为一个教程,而不是确切的答案。
第一件事-需要采取哪些步骤才能实现这一点?
- 获取输入的值
- 检测"回车"键按下
- 插入新行
- 将行设置为输入的值
好的,现在我们已经把每个问题分解成许多小任务。这使得在问题的每个小节上寻找答案变得更加容易?
下一篇-你知道javascript框架吗?
在编写javascript时,许多浏览器对标准部分的处理方式不同,或者某些部分根本不受支持。因此,完全手工编写javascript不仅麻烦,而且很难跨浏览器编写。框架使开发变得更加容易和干净,因为它们是为在所有浏览器中处理相同的功能而构建的。
http://jquery.com-是我最喜欢的,非常容易使用,所以我会给你举一些使用它的例子。
好的,进入编码。
首先,我们需要将框架链接到html页面。如果它是一个小网站,或者你在玩,我喜欢让谷歌为我托管jQuery。通常你可以下载它。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
要真正添加代码并使用jQuery,我们需要添加一些脚本标记,并等待DOM(文档对象模型)在页面上准备好。
<script type="text/javascript">
$(document).ready(function() {
// do stuff when DOM is ready
});
</script>
现在,我们需要选择要从中获取数据的元素。jQuery选择器非常适合这样做。一个简单的例子是通过元素的"id"属性获取元素。
在输入的情况下,我们将使用"name"。在选择器中引用ID时,我们总是在它前面加一个#。
$('#name').val()
这将为我们提供输入的值。现在添加另一行。
您的桌子没有ID,但让我们给它一个ID。
<table id='numbers'>
为行添加html
$('#numbers').append('<tr><td></td><td></td></tr>');
选择刚刚添加的行的第一列,然后添加数字。
var rows = $('#numbers tr').length;
$('#numbers tr:last td:first').html(rows);
将输入的值复制到第二列
$('#numbers tr:last td:last').html($('#name').val());
删除空的输入
$('#name').val('');
现在,为了检测击键,我们将在输入上附加一个监听器,并将所有这些代码放在里面。
$('#name').on('keyup', function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
$('#numbers').append('<tr><td></td><td></td></tr>');
var rowcount = $('#numbers tr').length;
$('#numbers tr:last td:first').html(rowcount);
$('#numbers tr:last td:last').html($('#name').val());
$('#name').val('').focus();
}
});
这看起来不错,除了$('name')正在进行额外的选择,从而减慢代码及其附加到该对象的函数内部的冗余速度。我们可以在侦听器内部使用$(this)而不是$('#name'),它引用完成的初始选择
$('#name').on('keyup', function(e) {
所以我们有
<script type="text/javascript">
$(document).ready(function() {
$('#name').on('keyup', function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
$('#numbers').append('<tr><td></td><td></td></tr>');
var rowcount = $('#numbers tr').length;
$('#numbers tr:last td:first').html(rowcount);
$('#numbers tr:last td:last').html($(this).val());
$(this).val('').focus();
}
});
});
</script>
我会在这里向您抛出一块骨头,因为这是非常简单的代码(而且您是新手)。试试这个jsFiddle示例。
HTML
<table width="500" border="1">
<tr>
<td>No.</td>
<td>Name</td>
</tr>
</table>
<br />
Enter Name:
<input type="text" name="name" id="name" />
jQuery
var index = 1;
$('input[name=name]').on('keyup', function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
$('table').append('<tr><td></td><td></td></tr>');
$('table tr:last td:first').html(index);
$('table tr:last td:last').html($(this).val());
$(this).focus().select();
index++;
}
});
欢迎使用Stackoverflow。
如果您正在使用jQuery,请查看jQuery的API,了解有关可用函数的详细信息。你的具体问题似乎是关于事件的——你可以在这里了解更多。
简而言之,您将希望绑定一个将结果委托给另一个控件的事件。我建议查看keyup函数。
我希望这能有所帮助。
参考文献:
- http://api.jquery.com/
- http://api.jquery.com/category/events/
- http://api.jquery.com/keyup/
- 正在添加动态第二类Jquery
- 如何在javascript而不是jquery中添加动态列表
- 为图例添加动态色彩标签
- 如何在谷歌表单中添加动态字段
- 如何添加动态Id's并在运行时提取它们
- 在 JavaScript 中添加动态文本
- 如何添加动态表单元素但保留其值(JS)
- 使用AngularJs在自定义TinyMCE编辑器中添加动态数据
- 如何使用JavaScript添加动态HTML内容(DIV)
- javascript初学者:在javascript中添加动态样式
- 如何使用Javascript在html源中添加动态数据
- 向Uploadify添加动态字段
- 如何在 Vue.js 中添加动态组件/部件
- 锚导航与坚持到顶部菜单..需要向锚点添加动态偏移量
- Javascript:添加动态方法
- 向角度对象添加动态功能
- 添加动态文本框时更新动态高度
- JavaScript 运行时错误:无法在 Windows 8 应用中添加动态内容
- 添加动态点击事件
- 添加动态字段以创建特定的 JSON 格式