0

私は人々が要素を入力し、それが自動成長するフォームを持っています。入力されているデータを計算したかったのですが、入力フィールドの内容をキャプチャするのに問題があります。これが私が使用している元のプログラム(http://jsfiddle.net/doktormolle/WaL84/)であり、いくつか読んで、.eqが自動成長リストの最後から2番目の要素を取得するために必要なコマンドであると信じています(I自動成長リストでは常に空白であるため、最後の要素を取得できません)。

私の最終目標は、すべての数値を取得して、合計または平均などを返すことです...

-2を試しvar from = $("#siblings").eq(-1).val();ましたが、最初のセルのみの値が表示され続けます(たとえば、各セルに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()条項の条件は、実際には間違っていないとしても混乱を招きます。

次に、キーダウンイベントが発生した入力要素から値を取得する必要があると思います。つまり、ハンドラー内で単純にthis、または。$(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 に答える