2012-07-28 11 views
5

Così ho il pulsante che assomiglia a questo conferma:javascript/jquery disabilitare pulsante di invio al clic, evitare una doppia presentazione di

<a href="#" id="submitbutton" 
onClick="document.getElementById('UploaderSWF').submit();"> 
<img src="../images/user/create-product.png" border="0" /></a> 

Quando faccio doppio clic su di esso doppie sottomette ovviamente, e il problema è che io' m salvando le informazioni nel database così avrò informazioni pubblicitarie lì, e non lo voglio. Questo uploader utilizza flash e javscript ed ecco un piccolo pezzo di codice che è rilevante per la cosa inviare (se aiuta)

$.fn.agileUploaderSubmit = function() { 
    if($.browser.msie && $.browser.version == '6.0') { 
     window.document.agileUploaderSWF.submit(); 
    } else { 
     document.getElementById('agileUploaderSWF').submit(); 
     return false; 
    } 
} 

Grazie ragazzi. Apprezzo il tuo aiuto. Questo è davvero qualcosa che non ero in grado di fare da solo perché ho una piccola esperienza con js e non so davvero come fare cose. GRAZIE.

risposta

8

Prova questo stato tagliato:

$('#your_submit_id').click(function(){ 
    $(this).attr('disabled'); 
}); 

modificare 1

Oh, nel tuo caso si tratta di un link e tasto senza presentare ...

var submitted = false; 

$.fn.agileUploaderSubmit = function() { 
    if (false == submitted) 
    { 
     submitted = true; 

     if($.browser.msie && $.browser.version == '6.0') { 
      window.document.agileUploaderSWF.submit(); 
     } else { 
      document.getElementById('agileUploaderSWF').submit(); 
     } 
    } 

    return false; 
} 

modificare 2

Per semplificare questo, provate questo:

<!doctype html> 

<html dir="ltr" lang="en"> 

<head> 

<meta charset="utf-8" /> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 

<script type="text/javascript"> 
<!--//--><![CDATA[//><!-- 
    $(document).ready(function() 
    { 
     $('#yourSubmitId').click(function() 
     { 
      $(this).attr('disabled',true); 

      /* your submit stuff here */ 

      return false; 
     }); 
    }); 
//--><!]]> 
</script> 

</head> 
<body> 

<form id="yourFormId" name="yourFormId" method="post" action="#"> 
    <input type="image" id="yourSubmitId" name="yourSubmitId" src="yourImage.png" alt="Submit" /> 
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

</body> 
</html> 

elementi Utilizza il modulo, come <input type="image" />, ad inviare un modulo non un normale link.

Questo funziona bene!

Dai uno sguardo allo jQuery.post() per inviare il modulo.

Buona fortuna.

Edit 3

Questo funziona bene anche per me:

<!doctype html> 

<html dir="ltr" lang="en"> 

<head> 

<meta charset="utf-8" /> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 

<script type="text/javascript"> 
<!--//--><![CDATA[//><!-- 
    $(document).ready(function() 
    { 
     var agileUploaderSWFsubmitted = false; 

     $('#submitbutton').click(function() 
     { 
      if (false == agileUploaderSWFsubmitted) 
      { 
       agileUploaderSWFsubmitted = true; 

       //console.log('click event triggered'); 

       if ($.browser.msie && $.browser.version == '6.0') 
       { 
        window.document.agileUploaderSWF.submit(); 
       } 
       else 
       { 
        document.getElementById('agileUploaderSWF').submit(); 
       } 
      } 

      return false; 
     }); 
    }); 
//--><!]]> 
</script> 

</head> 
<body> 

<form id="agileUploaderSWF" name="agileUploaderSWF" method="post" action="http://your.action/script.php"> 
    <input type="text" id="agileUploaderSWF_text" name="agileUploaderSWF_text" /> 
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

<a href="#" id="submitbutton"><img src="../images/user/create-product.png" border="0" /></a>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

</body> 
</html> 

Speriamo che questo aiuta.

+0

Grazie, lo proverò. – inrob

+0

Ciao Raisch.Grazie per la soluzione. Ho applicato il tuo secondo codice e non ha funzionato davvero. Ancora invia più di una volta. Dovrei applicare anche il primo blocco di codice? – inrob

+0

@bornie - Nessun problema, quindi puoi accettare questa risposta. :-) – Raisch

4

Aggiungere il seguente alla onclick:

onclick="document.getElementById('submitbutton').disabled = true;document.getElementById('UploaderSWF').submit();" 

Detto questo, si dovrà gestire questo doppio presentare la prevenzione sul lato server anche.

+0

Grazie, ci proverò. Nessun problema con il lato server. Posso farlo, sono consapevole che non posso fare affidamento su js solo perché a volte gli utenti disabilitano il supporto di javascript sui loro browser. – inrob

+0

Questo utente utilizza jquery. Non vedo la necessità di un attributo onClick o document.getElementById. – Daedalus

+0

@bornie, ho effettuato una modifica. Doveva essere 'document.getElementById ('' ** 'submitbutton' **''. .disabled' – Nivas

-1

Questo disabiliterà tutto Invia pulsanti ei collegamenti con la classe presentare o l'attributo data-presentare in una forma, se si fa clic:

$(document).ready(function() { 
    $('form').submit(function() { 
     $(this).find('input[type="submit"]').attr('disabled', true); 
     $(this).find('a[data-submit], a.submit').click(function() { 
      return false; 
     }); 
    } 
}); 

Ciò si applica automaticamente a ogni forma, tra l'altro. Se vuoi solo un determinato, usa l'id invece del modulo. Probabilmente lo sapevi già, però.

+0

Beh, il problema è che se è possibile vedere più attentamente, il pulsante di invio non è entro

. È separato Pensi che il tuo codice sia ancora valido? – inrob

Problemi correlati