我的代码在这里有点问题。我想要完成的是获取键上的输入字段的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)
}
提前致谢!
答案 0 :(得分:1)
当您获得attr('id')
时,您不需要致电.val()
。此外,您获取该字段的代码会假定以&#39;字段&#39;开头的ID最后,如果您要接受文本输入并且处理是一个数字,您应该调用parseInt()
(十进制的基数为10),这将起作用:
$(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;