Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    recuperare valore da id come se fosse un array

    Buonasera poichè devo aggiungere n righe di un form in cui ogni riga andrà poi inserita in un db con php , vorrei sapere qale è l'errore nel recuperare dei valori come da esmpio :


    html :
    codice:
    <div >
     <input type="text" id='valore_inserito[0]'>
      <button>Mostra Valore</button>
    </div>
    js:

    codice:
    // find elements
    var button = $("button")
    
    
    // handle click and add class
    button.on("click", function(){
      var valore_inserito = $("#valore_inserito[0]").val();
    
    
      alert(valore_inserito);
    })
    se rimuovo [0] sia dall' html che dal js funziona altrimenti no ...

    https://jsfiddle.net/18kzhs6e/1/

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Salve, risposta breve:
    meglio evitare una sintassi del genere per degli id incrementali, sarebbe più semplice utilizzare una cosa del tipo valore_inserito_0.

    Risposta lunga:
    I selettori jQuery funzionano grosso modo come quelli CSS. Le parentesi quadre sono dei meta-caratteri usati per rappresentare un selettore di attributo. Ad esempio #elemento[href] seleziona tutti gli elementi con id #elemento, i quali posseggono anche un attributo "href".

    La sintassi da te utilizzata (#valore_inserito[0]) va quindi a selezionare l'elemento con id #valore_inserito il quale però deve anche avere un attributo il cui nome è esattamente 0. Per tale motivo non lo trova.

    Benché si possano usare le parentesi quadre (cosi come vari altri meta-caratteri) all'interno dei valori id, nel selettore jQuery (così come per il CSS) per questi caratteri (che sostanzialmente sono utilizzati dal sistema di selezione) in questo caso bisogna effettuare opportunamente l'escape.

    Per il CSS va fatto un semplice escape, ad esempio:
    codice:
    #valore_inserito\[0\]{
       outline: 5px solid red;
    }
    .
    Per jQuery va fatto un doppio escape, ad esempio:
    codice:
    $("#valore_inserito\\[0\\]")
    .
    Ora, perché complicarsi la vita in questo modo?

    In genere, per casi del genere, si ricorre all'uso di una differente sintassi (vedi risposta breve) o addirittura all'uso di eventuali attributi personalizzati (vedi Uso degli attributi data), se ad esempio ti serve solo attribuire un indice incrementale, o magari puoi usare l'attributo name, in questo caso con le parentesi quadre, se devi creare un array da passare lato server.

    Da ciò che hai postato non è chiaro cosa ti ha spinto ad usare un id in quel modo. Il fatto che tu debba processare quella serie di elementi per ottenere i dati da inserire nel db, non giustifica l'uso di quella sintassi per definire gli id. A quel punto sarebbe più consono impostare l'attributo name in quel nome; poi se il problema è selezionare distintamente tali elementi tramite jQuery, si può risolvere molto probabilmente in altri modi.

    A te la scelta.
    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.