Tengo un campo de entrada en cada fila de mi tabla de datos jquery. Tengo que activar un evento en el cambio de texto e ingresar presionar para cada uno de estos campos de entrada. Estoy cargando jquery datatable usando el procesamiento del lado del servidor. ¡Antes de usar el procesamiento del lado del servidor, los eventos del campo de entrada funcionaban bien! ¿ahora?

Eventos que usé antes ---

$('#txtQty').keydown(function (e) {
        alert("keydown");
}

$('#txtQty').change(function () {
         alert("Change");

}

Los mismos oyentes que uso después de aplicar el procesamiento del servidor.

Detalles de la cuadrícula de Jquery: procesamiento del lado del cliente y agregar cuadro de entrada ~

@foreach (var item in Model)
{
 <tr>
                    .
.
.
.
.
.
@if (item.Qty <= 0)
{
 <td>
     <input class="inputs" id="txtQty" type="text" value=@item.MinQty />
     </td>
    }
  }

Procesamiento del lado del servidor y cuadro de entrada aplicado sobre la marcha

$('#grid').dataTable({
        "bServerSide": true,
        "sAjaxSource": "../myaction/AjaxHandler",
        "bProcessing": true,
        "scrollY": 385,
        "scrollX": true,
        "scrollCollapse": true,
        "jQueryUI": true,
        "bJQueryUI": true,
        "sDom": 'lfrtip',

        "aoColumns": [
                        { "sName": "dfgdfg" },
                        { "sName": "dfgdfg" },
                        { "sName": "hhh" },
                        {
                            "sName": "Qty",

                            "mRender": function (sName) {

                                return '<input class="inputs" id="txtQty" type="text"  value='+ sName +' />';
                            },
                        },
                        { "sName": "Category" },
                        { "sName": "Comment" }
        ],
        "oLanguage": {

            "sProcessing":'Processing.....'
        }

    });
1
Murali Uppangala 4 sep. 2014 a las 13:56

2 respuestas

La mejor respuesta
  • tiene varios elementos con la misma identificación txtQty. Para el manejo correcto de eventos de múltiples elementos, puede usar class. Por ejemplo, clase inputs.

  • para elementos creados dinámicamente puede usar $(document).on("event", "selector", function() {});.

Entonces, finalmente, debería verse así:

$(document).on('keydown', '.inputs', function(e) {
    alert("keydown");
}

$(document).on('change', '.inputs', function() {
    alert("Change");
}
1
Regent 4 sep. 2014 a las 10:30

Supongo que hay más de un "txtQty" por página, así que en lugar de una identificación, use una clase

 <input class="inputs txtQty" type="text" value=@item.MinQty />


$('.txtQty').keydown(function (e) {
    alert("keydown");
}

$('.txtQty').change(function () {
     alert("Change");
}
1
Maximilien 4 sep. 2014 a las 10:03