首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >上一列表项作为输入

上一列表项作为输入
EN

Stack Overflow用户
提问于 2012-03-07 09:42:18
回答 3查看 83关注 0票数 1

我正在尝试从列表中获取输入框的值。我可以让它与html一起工作,如下所示。

代码语言:javascript
运行
复制
<div id='numbs'>
    <input id='1'>enter value
    <input id='2'>enter value
</div>

但是如果输入在列表中,我就不能让它工作。

这是我的代码。谢谢你的帮助。我是个新手,所以如果有什么逻辑问题,请让我知道。

代码语言:javascript
运行
复制
var lastl = parseInt($("input:last").attr('id'));

$("input").live("click", function() {
    if (this.id == lastl && ($(this).prev('input').attr('value') > 0)) {
        lastl = lastl + 1;
        $('#numbs').append('<input id=' + (lastl) + '> enter value');
   }
});

jsfiddle

编辑:我想能够使我的html在这种格式

代码语言:javascript
运行
复制
<ul id='numbs'>
    <li><input id='1'>enter value</li>
    <li><input id='2'>enter value</li>
</ul>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-07 10:08:28

当他们单击列表中的最后一个<input>时,看起来您只是在尝试添加新的‘re。

有几件事需要注意:

  1. 使用on而不是livedelegate,如果您必须使用较旧的jQuery,那么优先使用delegate而不是单击事件可能希望使用焦点事件而不是单击事件。有些人知道如何使用键盘,有些人必须使用键盘;此外,焦点似乎更适合您的意图。
  2. 某些浏览器的所有数字id属性都有问题,因此最好不要使用它们。
  3. 您不需要知道前一项的id,您可以根据<input>元素的总数计算出下一项。

我会使用类似这样的东西:

代码语言:javascript
运行
复制
$('#numbs').on('focus', 'input', function() {
    var $inputs = $('#numbs').find('input');
    if($inputs.index(this) == $inputs.length - 1) {
        var input = '<input id="input-'
                  + $inputs.length
                  + '">';
        $('#numbs').append('<li>' + input + '</li>');
    }
});​

当它们命中<ul>中的最后一个<input>时,您希望采取行动,因此使用index准确地说明这一点

代码语言:javascript
运行
复制
if($inputs.index(this) == $inputs.length - 1)

演示:http://jsfiddle.net/ambiguous/L2MDa/

票数 1
EN

Stack Overflow用户

发布于 2012-03-07 09:58:46

这样行得通吗?

代码语言:javascript
运行
复制
var numbs = $('#numbs').on('focusin', 'input:text', function (e) {
    var lastInput = numbs.find('input:text:last')[0];

    if (this === lastInput) {
        numbs.append('<li><input /> enter value</li>');
    }
});

此外,我将您的事件从单击切换到焦点,因为可能有人正在切换您的表单域。

票数 0
EN

Stack Overflow用户

发布于 2012-03-07 10:02:08

您甚至可以在不对输入进行编号的情况下执行此操作:

代码语言:javascript
运行
复制
<div id='numbs'>
    <li><input>enter value</li>
    <li><input>enter value</li>
</div>
代码语言:javascript
运行
复制
$("#numbs").on("focus", 'input', function() {
    var inputs = $('input');
    if (inputs.index(this) == inputs.length-1 && inputs.eq(inputs.length-2).val() > 0 ) {
        $('#numbs').append('<li><input>enter value</li>');
    }
});

示例:http://jsfiddle.net/jtbowden/k4gMJ/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9594653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档