Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    jQuery serialize: radio button dopo aggiornamento ajax

    Utilizzo serialize() di jQuery per inviare tramite Ajax un form e tutto funziona correttamente.

    Utilizzando lo stesso metodo dopo avere aggiornato il form sempre tramite ajax ed impostato anche i radio button tali radio button non prendono il valore scelto.

    La libreria è la 1.4.2 ma ho provato con la 1.6.3 e con l'ultima (1.10.1).

    I campi del form:
    codice:
    <input type="radio" name="sesso" id="sesso_m" value="M" checked tabindex="10"> <label for="sesso_m">M</label>
    <input type="radio" name="sesso" id="sesso_f" value="F"> <label for="sesso_f">F</label>
    Come li popolo tramite risposta ajax + json:
    codice:
    $.each(response, function(key, value) {
    						
        $('input[name="' + key + '"]').val(value);
    });
    
    $('input[name="sesso"][value="' + response.sesso + '"]').attr('checked', 'checked');

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,923
    forse, quando fai il serialize, stai usando un riferimento ad una collection che hai generato al primo caricamento (e che quindi non include i nuovi elementi caricati via ajax), ma senza vedere una demo è difficile da capire.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Non ho ben capito cosa intendi.

    Nella risposta anche del secondo submit del form il campo è presente ma mantiene lo stesso valore anche se seleziono un altro.
    Lo stesso NON vale invece per i campi tipo text.

    Questo è un pezzo dei dati che vengono pescati. Vedi che il campo sesso è presente ma anche se scelgo 'F' nel form rimane invariato.

    codice:
    &cap=33047&sesso=M&codice_fiscale=
    Se invece scelgo 'F' nel form e lo invio prima di caricare dati (a form pulito) funziona e presenta il val corretto.

    Ho anche provato a pescare i dati senza serialize per i campi radio ma il risultato non cambia:

    codice:
    var campi = 'action=add&' + $('#client-form input[type="text"]').serialize();
    campi += '&sesso=' + $('input[name="sesso"]:checked').val();
    campi += '&abilita_mailing=' + $('input[name="abilita_mailing"]:checked').val();

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,923
    senza vedere una demo con il minimo codice necessario che riproduce questo comportamento mi è impossibile aiutarti
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ecco fatto:

    http://antonutti.altervista.org/Varie/

    Ho messo le indicazioni direttamente lì.

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    nel response ajax forzi entrambi value sesso su F
    $('input[name="sesso"][value="' + response.sesso + '"]').attr('checked', 'checked');
    infatti dopo hai:
    <input id="sesso_m" type="radio" value="F" name="sesso">
    <label for="sesso_m">M</label>
    <input id="sesso_f" type="radio" value="F" name="sesso">
    <label for="sesso_f">F</label>
    per risolvere penso basti fare cosi (non l'ho testato):
    codice:
    if (response) {
    $.each(response, function(key, value) {
    $('input[name="' + key + '"]').val(value);
    });
    if(response.sesso=="F"){
    $('input[name="sesso"][1]').attr('checked', 'checked');
    }else{
    $('input[name="sesso"][0]').attr('checked', 'checked');
    }
    }
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Forse interpreto male io ma non mi sembra di forzarlo ma seleziono:

    Selezione (get):
    codice:
    $('input[name="sesso"][value="' + response.sesso + '"]')
    Forzare (set):
    codice:
    $('input[name="sesso"]).val(response.sesso)
    Ho provato anche il tuo codice sempre nella demo ma il risultato è lo stesso.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ah no scusa... hai ragione!

    Nel ciclo each vado a forzarlo e non in quello sotto!

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ecco il codice finale corretto:

    codice:
    if (response) {
    	
        $.each(response, function(key, value) {
    						
            $('input[type="text"][name="' + key + '"]').val(value);
        });
    
        $('input[name="sesso"][type="radio"][value="' + response.sesso + '"]').attr('checked', 'checked');
    }

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Quello che è strano è che comunque sul sito ufficiale il metodo di selezione di campi radio e checkbox sia proprio questo.

    Guardate l'ultimo esempio sotto sul sito:

    http://api.jquery.com/val/

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 © 2024 vBulletin Solutions, Inc. All rights reserved.