Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    170

    radio button remove() jquery

    Buonasera forum,
    sto realizzando un radio button condizionale che intercetta correttamente i valori: azienda e privato
    Se seleziono infatti il radio button "privato" la classe #fatturazione viene correttamente rimossa
    Se dopo però clicco sul radio button "azienda" non riesco a vedere nulla..


    html


    codice:
    <tr id="fatturazione"><td>Durata annuncio</td>
    <td><select name='ad_duration' mosReq='1' onchange="changeDuration(this)" mosLabel='Durata annuncio' class='adsmanager_required'><option value=''>Seleziona la durata dell'annuncio</option><option value='8'>No expiration</option><option value='1'>7 giorni - 0.99&nbsp;€</option></select></td></tr>



    jquery


    codice:
    $(function(){
    $('#tr_ad_pubblicacome input:radio').click(function() {
        if ($(this).val() === 'azienda') {
            $("#fatturazione").append();
        } else if ($(this).val() === 'privato') {
        $("#fatturazione").remove();
        } 
      });
        
    }); //end jquery

    Grazie per l'aiuto

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, al posto di remove() e append() puoi utilizzare hide() e show().
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    170
    Ciao killerworm,
    quello che dici è vero. Mi sono dimenticato di specificare che il campo è obbligatorio per "azienda" e quindi lo show-hide purtroppo non va bene

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Scusa ma non ti seguo...

    Tu hai utilizzato remove che sostanzialmente rimuove l'intero tr dal DOM della tua pagina. Infatti una volta rimosso non puoi usare append come hai fatto. Il metodo append infatti preclude che tu specifichi un contenuto da aggiungere all'elemento a cui è applicato tale metodo.
    Diversamente il metodo hide nasconde l'elemento ma non lo rimuove dal DOM, per cui questo continua ad esistere nel documento. Poi con show lo rendi semplicemente visibile.

    Non capisco cosa c'entri col fatto che il campo sia obbligatorio per "azienda", dal momento che per "azienda" sarà comunque visibile. Eventualmente, se sarà selezionato "azienda", farai un'ulteriore validazione per quei campi che sono obbligatori.

    No?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    170
    Il punto è che è un sito di annunci sviluppato con joomla + adsmanager e non sapendo dove metter mano al codice php volevo aggirare il problema tramite jquery.. mi basterebbe anche capire come intercettare il valore mosReq='1' che è quello che da l'obbligatorietà del campo in modo da dirgli:

    radio button azienda mosReq='1'
    radio button privato mosReq='0'

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Scusa Fabio non è difficile da capire cosa intende killer invece d'usare questo codice

    codice:
    $(function(){
    $('#tr_ad_pubblicacome input:radio').click(function() {
        if ($(this).val() === 'azienda') {
            $("#fatturazione").append();
        } else if ($(this).val() === 'privato') {
        $("#fatturazione").remove();
        } 
      });
        
    }); //end jquery
    Puoi usare questo
    codice:
    $(function(){
    $('#tr_ad_pubblicacome input:radio').click(function() {
        if ($(this).val() === 'azienda') {
            $("#fatturazione").show()
        } else if ($(this).val() === 'privato') {
        $("#fatturazione").hide()
        } 
      });
        
    }); //end jquery
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Aspetta, inizio a capire... mosReq hai detto che rende un campo obbligatorio quindi, nel momento in cui selezioni "privato", quel campo non dovrebbe restare obbligatorio (ora capisco il motivo del tuo tentativo di rimuoverlo).
    Ignoravo la funzionalità di tale attributo, per questo non riuscivo a seguire il tuo ragionamento.

    Quello che vuoi fare è cambiare mosReq, giusto?

    Per risolvere, lascerei comunque la soluzione dello show-hide (come ha chiaramente postato Andrea) e andrei semplicemente a modificare (o rimuovere) l'attributo mosReq in questo modo:


    codice:
    $(function(){
      $('#tr_ad_pubblicacome input:radio').click(function() {
        if ($(this).val() === 'azienda') {
          $("#fatturazione").show().find(".adsmanager_required").attr("mosReq",1);
        } else if ($(this).val() === 'privato') {
          $("#fatturazione").hide().find(".adsmanager_required").attr("mosReq",0);
          // Oppure puoi rimuovere direttamente mosReq in questo modo
          //$("#fatturazione").hide().find(".adsmanager_required").removeAttr("mosReq") 
        }
      });
    });
    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.