Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    378

    come posso incrementare l'array del campo select in un form con righe dinamiche?

    Salve,
    sto creando un form con righe dinamiche per aggiungere i prodotti all'ordine, ogni volta che premo sul pulsante add, viene aggiunto un nuovo rigo che clona il campo select e input, e incrementare l'array.

    Per i campi input l'incremento avviene correttamente:
    <input name="data[OrdersProduct][1][quantity]" class="form-control" step="0.01" value="" id="OrdersProduct1Quantity" type="number">

    Mentre per il campo con la select è sempre fermo a 0
    <select name="data[OrdersProduct][0][product_id]" class="form-control" id="OrdersProduct0ProductId">

    Quest è lo script, sapete dirmi come posso fare per incrementare anche l'array del campo select?

    codice HTML:
    <script>
        $(":button").click(function () {
            $(".tbody tr:last-child").clone().appendTo('tbody');
            $("tr:last-child").find('input').val('');
            $("tr:last-child input").each(function () {
                var nameAttr = $(this).attr('name');
                var newIndex = parseInt(nameAttr.replace(/[^\d]/g, '')) + 1;
                $(this).attr('name', nameAttr.replace(/\d/, newIndex));
    
                var idAttr = $(this).attr('id');
                var newIndex = parseInt(idAttr.replace(/[^\d]/g, '')) + 1;
    
                $(this).attr('id', idAttr.replace(/\d/, newIndex));
    
            });
        });
        
         $(document).on('click', '.remove', function () {
         $(this).closest('tr').remove();
         return false;
     });
    
    </script>
    Basta vivere,
    basta amare ogni momento
    e non porsi alcuna domanda
    sul momento che verrà

  2. #2
    Non è necessario incrementare manualmente l'indice, è una cosa che può fare HTML e il tuo linguaggio lato-server.

    Prova ad impostare il name dell'input in questo modo:

    codice:
    <input name="data[OrdersProduct][quantity][]" ...>
    E il name della select, di conseguenza:

    codice:
    <select name="data[OrdersProduct][product_id][]" ..>

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    378
    Ciao Luca,
    sto usando cakephp e se faccio come dici tu, l'array per la select product_id non viene incrementato.
    Questa è la stringa che gli passo per generare la form.

    Codice PHP:
    echo $this->Form->input('OrdersProduct.0.product_id', array('label' => 'Account name'));
    echo 
    $this->Form->input('OrdersProduct.0.quantity', array('label' => 'Account name')); 
    Basta vivere,
    basta amare ogni momento
    e non porsi alcuna domanda
    sul momento che verrà

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.