Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    76

    Limitare Upload multiplo

    Buongiorno,
    utilizzo questo codice per l'upload multiplo dei file:
    codice:
    <form enctype="multipart/form-data" action="upload.php" method="POST" name="nomeform">				<div id='content_header' style='margin-top:-75px;'>
    					<TABLE align='center' cellspacing='0' cellpadding='0'>
    						<tr height='35' bgcolor='#EFEFEF'>
    							<td align='center'>
    								<input type="file" name="file[]" accept=".pdf" multiple />
    								<input name="invia" type="submit" value="Carica" />
    							</td>
    						</tr>
    					</TABLE>
    				</div>
    			</form>
    Dopo averli selezionati, tramite il pulsante del form, ricarico la pagina ed invio la variabile che contiene l'array dei file. Posso mettere un controllo con una funzione javascript per limitare con un avviso se si supera un certo numero di file selezionati? Intendo dopo averli selezionati e comunque prima di averli inviati.

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    76
    Buongiorno,
    mi scuso per il titolo generico della discussione. Pensavo di averlo ricontrollato prima di inviarla, ma non era così.

    Ho cercato di personalizzare un codice che ho trovato, ma in javascript non mi funziona neppure un alert:
    codice:
    <form enctype="multipart/form-data" action="upload.php" method="POST" id="form_upload">
    <input type="file" name="file[]" accept=".pdf" multiple />
    <input name="invia" type="submit" value="Carica" />
    </form>
    codice:
    <script>
         $(function() {            
                alert('function richiamata');
                
                var min_file_number = 1, 
                max_file_number = 3, 
                $form = $('form_upload'), 
                $file_upload = $('#file', $form), 
                $button = $('.submit', $form);
                
                $button.prop('disabled', 'disabled');
                
                $file_upload.on('change', function () {
                                                alert('change richiamata');
                                                
                                                var number_of_file = $(this)[0].files.length;
                                                
                                                if (number_of_file < min_file_number) {
                                                    alert('devi caricare almento ' + ${min_file_number} + ' file.');
                                                    $(this).val('');
                                                    $button.prop('disabled', 'disabled');
                                                } else if (number_of_file > max_file_number) {
                                                    alert('puoi caricare massimo ' + ${max_file_number} + ' files.');
                                                    $(this).val('');
                                                    $button.prop('disabled', 'disabled');
                                                } else {
                                                    alert('OK.');
                                                    $button.prop('disabled', false);
                                                }
                                                
                                            });
            });
    </script>
    Ultima modifica di jip77; 29-12-2024 a 08:43

  3. #3
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,746
    mi scuso per il titolo generico della discussione
    fixed

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,769
    Quote Originariamente inviata da jip77
    Ho cercato di personalizzare un codice che ho trovato, ma in javascript non mi funziona neppure un alert:
    Ciao, la parte di JavaScript che hai provato a personalizzare utilizza la libreria jQuery. Inutile dire che tale libreria va inclusa opportunamente nella pagina html.
    Lo hai fatto?
    Sai farlo?
    In caso contrario consiglio di fare qualche ricerca in merito.

    Lo script presenta comunque degli errori di sintassi che ne interrompono l'esecuzione; posso giusto ipotizzare che tali errori siano dovuti al tuo tentativo di personalizzare lo script.
    Consiglio di verificare sempre se ci sono errori di esecuzione attraverso la console del tuo browser.
    Lo hai fatto?
    Sai farlo?
    In caso contrario consiglio di fare qualche ricerca in merito.

    Ancora, vedo altri errori di tipo logico che compromettono il corretto funzionamento di tale sistema.
    Ribadisco che stai usando jQuery e nello specifico dovresti assicurarti di specificare correttamente i selettori passati alla funzione principale $().

    In questa riga:
    codice:
    $form = $('form_upload')
    il selettore che hai specificato ('form_upload'), così come lo hai scritto, indicherebbe di cercare qualsiasi elemento il cui nome del tag è 'form_upload'.
    Nel tuo HTML però non c'è alcun tag denominato in tale modo, per cui non sarà selezionato nulla e la variabile "girerà a vuoto".

    Per precisare, nel tuo HTML vedo un tag <form> e due tag <input>, ma nessun tag <form_upload>.

    Capisco bene che l'errore sta nel fatto che quel selettore debba puntare all'elemento che possiede l'id con tale valore; in tal caso dovresti anteporre il cancelletto, in questo modo: $('#form_upload').

    A questo proposito, per selezionare degli elementi attraverso la funzione principale di jQuery, tieni presente che valgono le stesse regole di base dei selettori CSS.

    In quest'altra riga invece hai commesso l'errore opposto (se così vogliamo dire):
    codice:
    $file_upload = $('#file', $form)
    Stai cercando un elemento che possiede l'id con valore file, ma nel tuo HTML non vedo alcun elemento con tale id, per cui non sarà selezionato nulla e anche questa variabile "girerà a vuoto".
    Forse va aggiunto un tale id a quel tag <input> di tipo file.

    Ancora, in questa riga:
    codice:
    $button = $('.submit', $form);
    il punto (.) che hai messo davanti a submit, specifica che va cercato qualsiasi elemento che abbia una classe con tale valore; nel tuo HTML vedo l'input di tipo submit ma non vedo applicata alcuna classe che permetta di selezionarlo in quel modo. Inutile dire che anche in questo caso non sarà selezionato nulla e anche questa variabile "girerà a vuoto".
    Vedi tu se applicare una classe sul tag o se magari è meglio usare, anche in questo caso, un id.

    Non voglio postare codici pronti/corretti, piuttosto ti invito a cerca di capire e di correggere gli errori qui indicati. Eventualmente fai sapere se trovi difficoltà.
    Buon proseguimento
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.