2008-11-28 6 views
3

J'ai une rangée de boutons, qui créent tous un fichier pdf que je veux ouvrir dans un nouvel onglet. De cette façon, la page du bouton reste sur le dessus, et le pdf est ouvert pour être imprimé. Pour éviter de cliquer sur un bouton deux fois désactiver le bouton, comme celui-ci (j'utilise python):Bouton de désactivation avec javascript: FF vs IE

<input type='submit' value='Factureren' name='submitbutton' id='%s' 
onclick="javascript:document.getElementById('%s').disabled=true; 
document.getElementById('%s').className='button_disabled';"> % ((but_id,) *3) 

En FF3 cela fonctionne très bien, à savoir le formulaire est soumis, le script exécuté, puis le bouton désactive. Dans IE, le bouton est simplement désactivé, mais le script de formulaire n'est pas exécuté.

Existe-t-il une solution à ce problème d'IE?

Répondre

8

C'est simple: un bouton d'envoi désactivé ne soumet pas de formulaire dans IE. Il faudrait envisager de restructurer votre code:

  • Utilisez un bouton normal, désactivez-le et appelez form.submit() de son gestionnaire.
  • Ne désactivez pas le bouton dans son "onclick", mais enregistrez-le, et faites-le dans l'onsubmit du formulaire.
5

Il est plus facile à faire:

<input type='submit' value='Factureren' name='submitbutton' id='%s' 
onclick="this.disabled=true; this.className='button_disabled';"> % ((but_id,) *3) 

Je ne sais pas si cela résout votre problème, mais il est ce que je ferais dans un cas comme celui-ci. Je pense que vous n'avez pas besoin de "javascript:" de toute façon.

+0

En effet, "javascript:" est le protocole URL utilisé dans les liens seulement. –

+0

"javascript" n'est même pas un protocole correct, c'est un pseudo-protocole. –

3

Vous pouvez essayer d'utiliser une fonction normale du bouton et le déclenchement de la forme submit() en cas onclick:

<input type="button" value="Factureren" name="submitbutton" 
onclick="this.disabled=true; this.className='button_disabled'; this.form.submit();"> 
0

Peut-être essayer de joindre le gestionnaire à l'événement onsubmit de la forme au lieu du clic de la bouton? Cela fonctionnerait également si l'utilisateur appuyait sur ENTER au lieu de cliquer sur votre bouton.

0

Au lieu de contrôler la div, pourquoi ne pas contrôler le bouton de soumission actuel? Cela fonctionne universellement dans tous les navigateurs que j'ai testé (IE6 + FF1 + et Safari)

function toggleSubmit(){ 
    frm=document.forms[0] 
    if(frm.submit.disabled==true){ 
     frm.submit.disabled=false; 
    }else{ 
     frm.submit.disabled=true; 
    } 
} 

ensuite sur le bouton tout ce que vous devez appeler est-

<input type='submit' value='Factureren' name='submitbutton' 
onclick="toggleSubmit();false;"> % ((but_id,) *3) 
0
<input type="submit" value="Factureren" name="submitbutton' id="%s" 
onclick="this.disabled = true; this.className = 'button_disabled'; true;"> 
% ((but_id,) *3) 

Vous pouvez utiliser ce au lieu de document.getElementById ('% s'). En outre, vous devez renvoyer true pour que l'événement onclick réussisse.

Vous pouvez également désactiver le bouton dans le gestionnaire d'onsubmit du formulaire. C'est probablement plus infaillible.

En outre, ce serait bien si vous n'utilisiez pas spécifiquement la classe pour un bouton désactivé. Les sélecteurs CSS sont conçus pour sélectionner les boutons désactivés pour vous.

0

Regardez cette partie:

onclick="javascript:document.getElementById('%s').disabled=true; 
document.getElementById('%s').className='button_disabled';" 

Le "javascript:" est inutile et mal.

onclick="document.getElementById('%s').disabled=true; 
document.getElementById('%s').className='button_disabled';" 

"javascript:" est l'URL 'protocole' utilisé dans les liens, et non dans les actions onclick.

En outre, essayez de dire au formulaire à soumettre. Je pense ce serait correct:

onclick="document.getElementById('%s').disabled=true; 
document.getElementById('%s').className='button_disabled'; 
this.form.submit();" 
0

onclick = "this.disabled = 'désactivé'; this.form.submit();" fonctionne parfaitement pour moi

Questions connexes