Hola En mi jquery, quiero completar los datos en los campos de formulario de la fila actual. Tendré varios campos con las mismas clases y mi código funciona, pero el problema al que me enfrento es que este código cambia de toda la fila, pero quiero cambiar solo los datos de mi fila actual Aquí está mi violín https://jsfiddle.net/1bfbtoxw/

Y aquí está mi jquery

$(".enginenum").autocomplete({
    source: "includes/modvehicleSale/search-engine.php",
    minLength: 1,
    select: function (event, ui) {
        var item = ui.item;
            if(item) {
                $('.txtchassis').val(item.ChassisNo);
                $('.txtdescription').val(item.BikeDescription);
                $('txtselling').val(item.SellingAmount);
            }
        }
})
0
DUbaicos 17 feb. 2017 a las 13:09

3 respuestas

La mejor respuesta

Un violín de muestra primero

Suponiendo que tiene .row como padre para cada row, puede referir la fila actual con $(this).closest('.row') y puede usar .find para obtener los elementos relacionados de esa fila. Entonces sus cambios serían los siguientes:

$(".enginenum").autocomplete({
    source: "includes/modvehicleSale/search-engine.php",
    minLength: 1,
    select: function (event, ui) {
        var item = ui.item;
            if(item) {
                $(this).closest('.row').find('.txtchassis').val(item.ChassisNo);
                $(this).closest('.row').find('.txtdescription').val(item.BikeDescription);
                $(this).closest('.row').find('.txtselling').val(item.SellingAmount);
            }
        }
});

Tenga en cuenta que id s debe ser único para seguir los estándares.

0
Guruprasad Rao 17 feb. 2017 a las 10:29

Intente seleccionar la fila más cercana, así

var row = $(event.target).closest(".row");

Luego use esta fila como contenedor en sus selectores

$('.txtchassis', row)

El código será:

    $(".enginenum").autocomplete({
        source: "includes/modvehicleSale/search-engine.php",
        minLength: 1,
        select: function (event, ui) {
            var row = $(event.target).closest(".row");
            var item = ui.item;
                if(item) {
                    $('.txtchassis', row).val(item.ChassisNo);
                    $('.txtdescription', row).val(item.BikeDescription);
                    $('txtselling', row).val(item.SellingAmount);
                }
            }
    })
0
pumpkinzzz 17 feb. 2017 a las 10:29

Su jsfiddle no está configurada correctamente.

Agregué la clase a sus otras entradas y cambié el código js a continuación:

const ac_settings = {
        source: "includes/modvehicleSale/search-engine.php",
        minLength: 1,
        select: function (event, ui) {
            var item = ui.item;
                if(item) {
                    $('.txtchassis').val(item.ChassisNo);
                                         $('.txtdescription').val(item.BikeDescription);
                    $('txtselling').val(item.SellingAmount);
                }
            }
    }

$.each($(".enginenum"), function() {
     $(this).autocomplete(ac_settings)
})
//$(".enginenum").autocomplete()

https://jsfiddle.net/1bfbtoxw/2/

0
Chris Chen 17 feb. 2017 a las 10:24