Yii Framework Forum: Submit multiplo con validazione in ajax e lato client - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Submit multiplo con validazione in ajax e lato client Rate Topic: -----

#1 User is offline   gerasimone 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 07-June 11

Posted 15 June 2011 - 08:57 AM

Ciao a tutti,
sto sviluppando il mio primo progetto con Yii, e sono quasi al completamento (spero di potervi far avere presto il link, così mi dite che ne pensate), ma oggi ho un piccolo problema che non riesco a risolvere:

nella pagina di registrazione dell'utente ho abilitato sia la validazione lato client che ajax, funziona tutto ma non riesco ad evitare il doppio click sul pulsante submit.
Inizialmente avevo pensato di disattivalo onlick, ma se poi c'è un errore di validazione, il pulsante dovrebbe essere riattivato.

C'è forse qualcosa messa a disposizione dal framework per gestire queste situazioni? O devo diventare matto con jquery e ajax? :-/

Grazie a tutti

Simone
0

#2 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 15 June 2011 - 09:53 AM

Matto no, all'onclick io disabiliterei il bottone, che riabiliterei qualche secondo dopo che la pagina di autenticazione ha fatto il suo dovere. Oppure, ... disabiliti la chiamata ajax per qualche secondo (per la stessa ragione). Così anche se uno clicca come un forsettato su quel bottone NON fa mille chiamate ajax.
0

#3 User is offline   markux 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 106
  • Joined: 26-November 10
  • Location:Grosseto

Posted 16 June 2011 - 01:27 AM

View Postgerasimone, on 15 June 2011 - 08:57 AM, said:

Ciao a tutti,
sto sviluppando il mio primo progetto con Yii, e sono quasi al completamento (spero di potervi far avere presto il link, così mi dite che ne pensate), ma oggi ho un piccolo problema che non riesco a risolvere:

nella pagina di registrazione dell'utente ho abilitato sia la validazione lato client che ajax, funziona tutto ma non riesco ad evitare il doppio click sul pulsante submit.
Inizialmente avevo pensato di disattivalo onlick, ma se poi c'è un errore di validazione, il pulsante dovrebbe essere riattivato.

C'è forse qualcosa messa a disposizione dal framework per gestire queste situazioni? O devo diventare matto con jquery e ajax? :-/

Grazie a tutti

Simone

aggiugni alla chiamata ajax i seguenti eventi:

beforeSend: function(){
     $('#idbutton').attr('disabled','disabled');
   },
   complete: function(){
     $('#idbutton').removeAttr('disabled');
   }

0

#4 User is offline   gerasimone 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 07-June 11

Posted 16 June 2011 - 08:28 AM

la soluzione di markux mi sembra valida, questa sera quando sarò a casa proverò.
Grazie mille ad entrambi :-)

Simone
0

#5 User is offline   gerasimone 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 07-June 11

Posted 16 June 2011 - 03:57 PM

non ho avuto molto succeesso, questo è quello che ho prodotto:

<?php $form=$this->beginWidget('CActiveForm', array(
            'id'=>'register-form',
            'enableClientValidation'=>true,
            'clientOptions'=>array(
                'validateOnSubmit'=>true,
		'beforeValidate'=>'js:function(form){$("#fsubmit").attr("disabled","disabled");return true;}',
		'afterValidate'=>'js:function(form, data, hasError){
		    if(hasError){
			$("#fsubmit").removeAttr("disabled"); 
			return false;
		    } 
		    return true; 
		}',
            ),
        )); ?>


chiaramente fsubmit è l'id del bottone che dovrebbe essere cliccato una sola volta.
ma non funziona come dovrebbe...
0

#6 User is offline   markux 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 106
  • Joined: 26-November 10
  • Location:Grosseto

Posted 17 June 2011 - 02:00 AM

View Postgerasimone, on 16 June 2011 - 03:57 PM, said:

non ho avuto molto succeesso, questo è quello che ho prodotto:

chiaramente fsubmit è l'id del bottone che dovrebbe essere cliccato una sola volta.
ma non funziona come dovrebbe...


quelle non sono chiamate ajax.
puoi anche provare a mettere nella in fondo alla pagina questo codice javascript:

$('#fsubmit').ajaxStart(function() {$(this).attr("disabled","disabled");}).ajaxStop(function() {$(this)..removeAttr("disabled");});

1

#7 User is offline   gerasimone 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 07-June 11

Posted 30 June 2011 - 11:39 AM

funziona, grazie mille ;-)
ignoravo l'esistenza di ajaxStart e ajaxStop!
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users