Jquery 上一个列表项作为输入

Jquery 上一个列表项作为输入,jquery,Jquery,我试图从列表中获取输入框的值。我可以让它像这样与html一起工作 <div id='numbs'> <input id='1'>enter value <input id='2'>enter value </div> 输入值 输入值 但是如果输入在一个列表中,我无法使其工作。 这是我的密码。谢谢你的帮助。我对此很陌生,所以如果有任何逻辑问题,请让我知道 var lastl = parseInt($("input:last").

我试图从列表中获取输入框的值。我可以让它像这样与html一起工作

<div id='numbs'>
    <input id='1'>enter value
    <input id='2'>enter value
</div>

输入值
输入值
但是如果输入在一个列表中,我无法使其工作。
这是我的密码。谢谢你的帮助。我对此很陌生,所以如果有任何逻辑问题,请让我知道

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');
   }
});
var lastl=parseInt($(“输入:last”).attr('id');
$(“输入”).live(“单击”,函数(){
if(this.id==lastl&($(this.prev('input').attr('value')>0)){
lastl=lastl+1;
$('#numbs')。追加('输入值');
}
});

编辑:我希望能够使我的html在此格式

<ul id='numbs'>
    <li><input id='1'>enter value</li>
    <li><input id='2'>enter value</li>
</ul>

  • 输入值
  • 输入值
  • 这样行吗

    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>');
        }
    });
    
    var numbs=$('#numbs').on('focusin','input:text',函数(e){
    var lastInput=numbs.find('input:text:last')[0];
    如果(此===lastInput){
    numbs.append(“
  • 输入值”
  • ”); } });
    另外,我将事件从单击切换到焦点,因为可能有人正在您的表单字段中进行切换。

    这样行吗

    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>');
        }
    });
    
    var numbs=$('#numbs').on('focusin','input:text',函数(e){
    var lastInput=numbs.find('input:text:last')[0];
    如果(此===lastInput){
    numbs.append(“
  • 输入值”
  • ”); } });

    另外,我将事件从单击切换到焦点,因为有人可能只是在您的表单字段中进行了切换。

    您可以这样做,而无需对输入进行编号:

    <div id='numbs'>
        <li><input>enter value</li>
        <li><input>enter value</li>
    </div>
    
    
    
  • 输入值
  • 输入值
  • $(“#numbs”)。关于(“焦点”,“输入”,函数(){
    变量输入=$(‘输入’);
    if(inputs.index(this)=inputs.length-1&&inputs.eq(inputs.length-2).val()>0){
    $(“#numbs”).append(“
  • 输入值
  • ”); } });

    示例:

    您甚至无需对输入进行编号即可完成此操作:

    <div id='numbs'>
        <li><input>enter value</li>
        <li><input>enter value</li>
    </div>
    
    
    
  • 输入值
  • 输入值
  • $(“#numbs”)。关于(“焦点”,“输入”,函数(){
    变量输入=$(‘输入’);
    if(inputs.index(this)=inputs.length-1&&inputs.eq(inputs.length-2).val()>0){
    $(“#numbs”).append(“
  • 输入值
  • ”); } });

    示例:

    当他们单击列表中的最后一个时,您似乎正在尝试添加新的

    有几件事需要注意:

  • 使用而不是或,如果必须使用较旧的jQuery,则更喜欢
    delegate
    而不是
    live
  • 您可能希望使用焦点事件而不是单击事件。有些人知道如何使用键盘,有些人不得不使用键盘;此外,专注似乎更符合你的意图
  • 有些浏览器的所有数值
    id
    属性都有问题,所以最好不要使用它们
  • 您不需要知道上一个项目的
    id
    ,您可以根据游戏中
    元素的总数计算出下一个项目
  • 我会用这样的方法:

    $('#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>');
        }
    });​
    

    演示:

    当他们单击列表中的最后一个时,看起来你只是想添加一个新的

    有几件事需要注意:

  • 使用而不是或,如果必须使用较旧的jQuery,则更喜欢
    delegate
    而不是
    live
  • 您可能希望使用焦点事件而不是单击事件。有些人知道如何使用键盘,有些人不得不使用键盘;此外,专注似乎更符合你的意图
  • 有些浏览器的所有数值
    id
    属性都有问题,所以最好不要使用它们
  • 您不需要知道上一个项目的
    id
    ,您可以根据游戏中
    元素的总数计算出下一个项目
  • 我会用这样的方法:

    $('#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>');
        }
    });​
    

    演示:

    Ah,索引。。。我绞尽脑汁想记住那个简单的函数。一定是吃晚饭的时间了。啊,索引。。。我绞尽脑汁想记住那个简单的函数。一定是吃晚饭的时间了。