Forum: Italian Ruby user group collection_select (problema prima riga)

Posted by Silvio Dell'Oste (silviodel)
on 2012-08-24 21:24
Buona sera a tutti

ho un paio di problemi ma creo due post

ho dei collection_select in alcuni partial e nei parametri ci passo
{:prompt => "- Seleziona...", :selected => .. ecc..

il problema è che i dati contenuti nel select sono obbligatori e vorrei
che venisse evidenziata la cosa come faccio anche altrove...

il problema è che se clicco sul submit senza selezionare un campo del
select non mi chiama l'errore neanche sul fatto che gli altri campi
obbligatori non sono inseriti, se seleziono un campo e clicco sul submit
invece mi chiama l'errore x gli altri campi obbligatori..

la cosa strana è che in un'altra vista faccio la stessa cosa e mi
funziona, l'unica cosa che cambia è che qui uso il form_remote_for e lì
il form_for ma ne ho bisogno...

in realtà in un altro punto dell'applicazione i dati non sono
obbligatori ma ho lo stesso problema, in pratica se seleziono il primo
campo (cioè quello NON utile) e premo submit non appare l'errore...

x me la soluzione potrebbe essere disabilitare il pulsante di submit
quando è selezionata la prima riga del select e abilitarlo quando si
seleziona un elemento.. spero si possa fare, se no non saprei come fare,
credo che sia risolvibile visto che non penso che si debba x forza
selezionare un elemento inizialmente ma con questo dovrebbe essere
gestito il fatto o che non è selezionabile il pulsante o che comunque
venga intercettato il problema e segnalato all'utente..

grazie mille
Posted by Silvio Dell'Oste (silviodel)
on 2012-08-25 19:31
Risolto con javascript..

x correttezza posto la mia soluzione...


<%= submit_tag 'Aggiungi', :disabled => 'true' %> cioè pulsante 
disabilitato inizialmente

sul collection_select passo come parametro :onchange => 
"disableButton(this)"

nel javascript scrivo

<script type="text/javascript">

        function disableButton(select) {
            var v = select.options[select.selectedIndex].value;
            if (v=="") v=null;
            if(v == null ) {
                $("input[type=submit]").attr("disabled", "disabled");
            }
            else {
                $("input[type=submit]").removeAttr("disabled");
            }
        }

</script>

c'ho perso molto tempo ma alla fine penso sia la soluzione migliore

ovviamente la disabilitazione iniziale serve per evitare che il pulsante 
sia inizialmente abilitato nonostante sia evidenziata la prima riga...

non so se è la soluzione migliore, è la mia...

grazie di tutto comunque...

se riuscite a risolvermi il problema di java (l'altro post) ve ne sarei 
grato

buon week-end
Posted by Marco Mastrodonato (marcomd)
on 2012-08-27 09:35
Ciao Silvio,
se posso darti un consiglio: la validazione falla sempre lato server, 
javascript dovrebbe solo migliorare la qualità. Il problema è abbastanza 
strano, se le validazioni sono come credo nel modello vengono applicate 
indipendetemente dal tipo di chiamata, http o ajax.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.