动态创建的文本框值不会更新

时间:2013-02-28 18:23:23

标签: javascript jquery

我正在使用此代码创建动态行,但文本框的值不会随着我的输入而更新。就像我输入的那样,我可以看到文本框中的文字,但是当我获取/检查该值时,它是空的。

我试过探索这个,但我无法理解发生了什么,有什么线索吗?

$('#add_ans').click(function(){
var rowCount = $('table tbody tr').length + 1;
var rowString = '<tr>\
                    <td><div class="span_5"><span class="badge badge-success">'+rowCount+'</span></div></td>\
                    <td><div class="span3"><input type="text" class="input-large" value="" /></div></td>\
                    <td><div class="span2 pull-right"><b>0</b></div></td>\
                    <td><div class="span2"><button class="btn btn-success" id="vote'+rowCount+'"><b>Vote!</b> <i class="icon-thumbs-up"></i></button></div></td>\
                    <td><div class="span2"><button class="btn btn-info" disabled><b>Reviews</b> <i class="icon-ok-circle"></i></button></div></td>\
                </tr>'
$('tbody').append(rowString);
$('tbody').on("click","#vote"+rowCount,voteOption);

});

并且事件处理程序是

function voteOption(){            
    var rowCount = $('tr').index($(this).closest('tr'));
    alert(rowCount);
    var ans = $('tr:eq('+rowCount+') .input-large').attr('value');
    alert(ans);

}

2 个答案:

答案 0 :(得分:2)

您没有在HTML中设置value属性,因此它将保持为空。只需使用val()代替attr('value')

var ans = $('tr:eq('+rowCount+') .input-large').val();

或者,您可以在生成的HTML中设置value属性,然后使用您现在的方法检索它。

这是一个jsFiddle,它正常工作:http://jsfiddle.net/Rjrpy/

答案 1 :(得分:2)

使用.val()代替.attr('value')