我有一个动态生成的HTML表单。表单包含输入字段和隐藏的输入字段。因此,它动态生成的次数取决于用户。输入字段的ID和名称也是动态设置的。当用户在输入框中输入内容时,我依赖类来从输入字段中获取值。
这是我的html表单的静态代码
<div id="choose_subjects_div2" class="form-group" >
<div class="col-md-6">
<input type="hidden" class="form-control onesubject" id="subj_1" name="subj_1" value="8">
<input type="number" class="form-control onetotal" id="tot_1" name="tot_1">
</div>
<p></p>
<div class="col-md-6">
<input type="hidden" class="form-control onesubject" id="subj_2" name="subj_1" value="5">
<input type="number" class="form-control onetotal" id="tot_2" name="tot_1" ">
</div>
<p></p>
</div>
我希望输入字段的值和与之关联的隐藏字段执行一些数据库操作。
这是我正在使用的jQuery。
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
$('.onetotal').keyup(function() {
delay(function(){
var xxx=$('.onetotal').val();
var hiddenx = $('.onetotal').siblings('.onesubject').attr('value');
alert(xxx +'and' +hiddenx );
}, 1000 );
});
keyup事件在延迟1秒后起作用。
错误地获取值。这是fiddle。
答案 0 :(得分:1)
您需要从触发相同输入键盘获取值,因此您需要在$(this)
函数内使用$('.onetotal')
而不是delay
:
$('.onetotal').keyup(function () {
delay(function () {
var xxx = $(this).val();
var hiddenx = $(this).siblings('.onesubject').val();
alert(xxx + ' and ' + hiddenx);
}.bind(this), 1000);
});
答案 1 :(得分:0)
每次选择所有隐藏的输入时,val()
都会返回第一个隐藏输入的值。您应该使用this
或event.target
来获取当前输入及其邻居。
$('.onetotal').keyup(function(event) {
var $current = $(this)
delay(function(){
var xxx=$current.val(),
hiddenx = $current.siblings('.onesubject').attr('value');
alert(xxx +'and' +hiddenx );
}, 1000 );
});