2013-02-28 3 views
1

Я создаю динамические строки с этим кодом, но значение текстового поля не обновляется по мере ввода. То есть, когда я набираю текст, я могу видеть текст в текстовом поле, но когда я получаю/проверяю значение, оно пустое.Значение динамически созданного текстового поля не обновляется

Я пробовал исследовать это, но я не мог понять, что происходит, какие-то подсказки?

$('#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

Вы не установив атрибут value в вашем HTML, поэтому он будет оставаться пустым. Просто используйте val() вместо attr('value'):

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

В качестве альтернативы, вы можете установить атрибут value в HTML вы генерации, а затем получить его, используя подход, вы сейчас.

Вот jsFiddle с ним работает правильно: http://jsfiddle.net/Rjrpy/

Смежные вопросы