0

我一直在做这件事,这让我发疯了 D:

所以,我有这个代码:

<table class="table table-condensed table-bordered table-hover" id="tbl_indicaciones">
<thead><tr>
<th>INDICACIÓN FARMACOLÓGICA</th><th>POSOLOGÍA</th><th>REALIZADO</th>
</tr></thead>
<tbody>
<tr>
<td><input type="text"></td>
<td><input type="text" class="txt_posologia"></td>
<td></td>
</tr>
</tbody>
</table>

和:

$(".txt_posologia").blur(function(){
    guardarIndicacion($(this));
});

var guardarIndicacion = function(elemento){
    //REVISAR QUE LOS CAMPOS TENGAN VALORES
    var indicacion = $(elemento).parent().parent().find('td:eq(0)').find('input:eq(0)');
    if(indicacion.val() == "" || $(elemento).val() == ""){
        alert("Debe ingresar ambos campos");
        indicacion.focus();
    }else{
        //REVISO SI SOY EDITABLE
        if($(elemento).attr("data-editable") != "false"){
            //HAGO ALGO
            //AGREGO LINEA A TABLA
            try{$("#tbl_indicaciones").find('tbody').
                append($('<tr>').
                    append($('<td>').html("<input type=\"text\">")).
                    append($('<td>').html("<input type=\"text\" class=\"txt_posologia\">").on('blur', function() {guardarIndicacion($(this))}))
                );}catch(e){alert(e.toString)}
            //ME HAGO NO EDITABLE
            $(elemento).attr("data-editable", "false");
        }
    }
}

所以,每次我的“inputs .txt_posologia”失去焦点时,它都会在我的桌子上添加一个新行。这适用于我页面上定义的第一个输入,但不适用于新的输入......

谢谢 !

以防万一,一个小小提琴

4

2 回答 2

3

如果“新的”是指动态生成的输入,那是因为您需要事件委托:

$(document).on('blur', '.txt_posologia', function(){
    guardarIndicacion($(this));
});
于 2013-10-22T14:09:53.637 回答
2

这是您的示例工作:http: //jsfiddle.net/GR5sJ/

$( document ).on( "blur", ".txt_posologia", function() {
  guardarIndicacion($(this));
});

为了处理这种动态生成的字段,最好使用 jquery 'on' 有关更多文档:http: //api.jquery.com/on/

穆哈苏尔特!

于 2013-10-22T14:21:04.433 回答