jQuery在keyup上获取类的输入ID不起作用

时间:2015-02-11 19:47:39

标签: javascript jquery input this keyup

我的代码在这里有点问题。我想要完成的是获取键上的输入字段的ID。所有感兴趣的输入字段都有一个" count"。它们都具有相同的ID,但它会增加,比如field1,field2,field3。我也有一些"回答"投入。

我想要完成的机制是首先从我输入的输入(keyup)中获取ID。然后我继续将该值(var valueField)传递给函数updateFields(idNumber)。之后,我只需将字段#x的值加100,最后将最终值附加到匹配输入,其id为answerx。

我的代码无效。有人知道为什么吗?这种方法是否正确?或者你会建议我改变什么?

这是我的代码:

HTML:

<input type="text" placeholder="" class="count" name="input1" id="1"/>
<input type="text" placeholder="" class="count" name="input2" id="2"/>
<input type="text" placeholder="" class="count" name="input3" id="3"/>

<input type="text" placeholder="" class="answer" name="ans1" id="answer1"/>
<input type="text" placeholder="" class="answer" name="ans2" id="answer2"/>
<input type="text" placeholder="" class="answer" name="ans3" id="answer3"/>

JavaScript的:

    $(document).on('keyup','.count',function(){
        var valueField = $(this).attr('id').val();
        updateFields(valueField);
    });

    function updateFields(idNumber){

        var rawVal = $('#field' + idNumber).val();
        var final = rawVal + 100;

        $('#answer' + idNumber).val(final)

    }

提前致谢!

1 个答案:

答案 0 :(得分:1)

当您获得attr('id')时,您不需要致电.val()。此外,您获取该字段的代码会假定以&#39;字段&#39;开头的ID最后,如果您要接受文本输入并且处理是一个数字,您应该调用parseInt()(十进制的基数为10),这将起作用:

&#13;
&#13;
$(document).on('keyup', '.count', function() {
  var valueField = $(this).attr('id');
  updateFields(valueField);
});

function updateFields(idNumber) {
  var rawVal = parseInt($('#' + idNumber).val(), 10);
  var final = rawVal + 100;

  $('#answer' + idNumber).val(final)

}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" placeholder="" class="count" name="input1" id="1" />
<input type="text" placeholder="" class="count" name="input2" id="2" />
<input type="text" placeholder="" class="count" name="input3" id="3" />

<input type="text" placeholder="" class="answer" name="ans1" id="answer1" />
<input type="text" placeholder="" class="answer" name="ans2" id="answer2" />
<input type="text" placeholder="" class="answer" name="ans3" id="answer3" />
&#13;
&#13;
&#13;