0

我有一个表单,人们可以在其中输入元素并自动增长。我想对输入的数据进行一些数学运算,但在捕获输入字段的内容时遇到了问题。这是我正在使用的原始程序(http://jsfiddle.net/doktormolle/WaL84/),我做了一些阅读并相信 .eq 是我需要获取自动增长列表的倒数第二个元素的命令(我无法获取最后一个元素,因为它在自动增长列表中始终为空白)。

我的最终目标是获取所有数字并返回总数或平均值等...

我尝试var from = $("#siblings").eq(-1).val();了 -2,但它一直只给我第一个单元格的值(例如,如果我在每个单元格上输入 1、2、3、4、5,那么我将继续得到 1)。

如果它有帮助这里的代码:

$(document).ready(function () {
    $("input[name='siblings']").on('keydown',
        function()
        {

           //is it the last input?
           if(this==$("input[name='siblings']:last",this.form)[0])
           {
            //insert an empty clone of the current input
            $(this).after($(this).clone(true).val(''));

           var from = $("#siblings").eq(-1).val();

           $("div#total").append("value = " + from + "<br>");       
           }
         });        
});

html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
</script>
<script type="text/javascript" src="input.js">
</script>
<style type="text/css">
input{display:block}​
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<p> test </p>
<form>
    <div id="inputform" name="inputform">
        <input id="siblings" name="siblings"> 
    </div>
</form>
<div id="total">
hello
</div>
&nbsp;
</body>
</html>
4

2 回答 2

1

首先,if()子句中的条件即使不是真的错误也会令人困惑。

其次,我认为您想从触发 keydown 事件的输入元素中获取值,换句话说,就是在处理程序内部的thisor $(this)。从新克隆的元素中获取价值是没有意义的,因为它已被故意清空。

尝试这个 :

$("input[name='siblings']").on('keyup', function(e) {
    if(e.which === 9) return;
    var $this = $(this);
    if (this == $this.siblings().andSelf().last().get(0)) {
        //insert an empty clone of the current input
        $this.clone(true).val('').insertAfter(this);
        $("div#total").append("value = " + $this.val() + "<br>");
    }
});
于 2012-07-13T01:18:48.303 回答
0

你应该使用.last()

var from = $('input[name="siblings"]').last().val();

此外,如果您使用类和名称来识别元素会更容易,因为键入要简单得多.siblings

于 2012-07-13T00:31:00.453 回答