2010-03-17 5 views
3

J'ai besoin que le bouton "Soumettre" soit désactivé à moins que JavaScript soit activé.JavaScript pour activer le bouton "Soumettre" (ne fonctionne pas)

J'ai essayé:

1.

<input onLoad="this.disabled=false" id="post-comment" type="submit" 
value="Post Your Comment" disabled="disabled"/> 

2.

<input onLoad="this.removeAttribute('disabled');" id="post-comment" type="submit" 
value="Post Your Comment" disabled="disabled"/> 

3.

<input onLoad="document.getElementById('post-comment').removeAttribute('disabled');" 
id="post-comment" type="submit" value="Post Your Comment" disabled="disabled"/> 

ne fonctionne pas. Je suis nouveau sur JavaScript, mais je ne trouve pas de réponse sur le net.

Répondre

4

Le problème est que les éléments d'entrée n'ont pas d'événement "onload". The spec montre les événements disponibles comme:

onfocus  %Script;  #IMPLIED -- the element got the focus -- 
    onblur  %Script;  #IMPLIED -- the element lost the focus -- 
    onselect %Script;  #IMPLIED -- some text was selected -- 
    onchange %Script;  #IMPLIED -- the element value was changed -- 
    onclick  %Script;  #IMPLIED -- a pointer button was clicked -- 
    ondblclick %Script;  #IMPLIED -- a pointer button was double clicked-- 
    onmousedown %Script;  #IMPLIED -- a pointer button was pressed down -- 
    onmouseup %Script;  #IMPLIED -- a pointer button was released -- 
    onmouseover %Script;  #IMPLIED -- a pointer was moved onto -- 
    onmousemove %Script;  #IMPLIED -- a pointer was moved within -- 
    onmouseout %Script;  #IMPLIED -- a pointer was moved away -- 
    onkeypress %Script;  #IMPLIED -- a key was pressed and released -- 
    onkeydown %Script;  #IMPLIED -- a key was pressed down -- 
    onkeyup  %Script;  #IMPLIED -- a key was released -- 

Comme il ne semble pas que l'un de ceux vous aidera, vous êtes probablement mieux loti pour ajouter l'événement à l'onload de l'élément de corps (ou par des moyens plus robustes, comme la fonction document prête de jQuery). Voici la façon de hack pour le faire:

<body onload="document.getElementById('post-comment').disabled=false"> 
+0

Cela ne fonctionnera pas ... Le demandeur veut que le bouton soit désactivé jusqu'à ce que JS soit actif, et onload nécessite JS activé. –

+0

Elite Gentleman: Vous n'avez aucun sens. –

0

Vous pouvez forcer le bouton d'envoi à appeler une fonction javascript qui exécute réellement l'envoi.

0

Le paramètre onload de l'élément submit est un gestionnaire d'événements Javascript. Par conséquent, si l'utilisateur n'a pas activé Javascript, cet événement ne se déclenchera pas.

ce que je propose:

Au lieu d'avoir un bouton d'envoi dans la page, ont une image qui est d'un bouton grisés. Ensuite, faites quelque chose comme ceci:

<img onLoad="enableSubmit()" .../> 

Le gestionnaire d'événement onLoad ne se déclenchera que si Javascript est activé. Dans votre fonction enableSubmit (définie ailleurs), vous pouvez remplacer la balise img par une entrée type = "submit".

1

Que diriez-vous:

<script> 
function enableInput(){ 
    document.getElementById('post-content').disabled=false; 
} 
</script> 
<body onload="enableInput();"> 
... 
<input id="post-comment" type="submit" 
    value="Post Your Comment" disabled="true"/> 

Cela va charger le bouton d'entrée désactivée par défaut et exécuter le javascript pour lui permettre de la charge de la page Web (qui bien sûr, ne se passera avec JavaScript activé.

1

en fonction de votre code exemple

<input id="post-comment" type="submit" value="Post Your Comment" disabled="disabled" /> 

puis sur javascript

<script type="text/javascript"> 
    window.onload = function() { 
    document.getElementById('post-comment').disabled=false; 
    } 

    //OR using JQuery 
    $(document).ready(function() { 
     document.getElementById('post-comment').disabled=false; 
    }); 
</script> 

//That's it really. 

Espérons que cela aide.

1

Vous voulez ceci:

<input id="post-comment" type="submit" value="Post Your Comment" disabled="disabled"/> 
<script type="text/javascript"> 
document.getElementById("post-comment").disabled = false; 
</script> 

à tout le monde: Pourquoi vous attendez onload?

1

Par "sauf si javascript est activé", voulez-vous dire que la soumission d'un formulaire doit être désactivée à moins que JS ne soit pris en charge par ce navigateur?

Si oui, vous devez désactiver le bouton d'envoi par défaut. Écrivez votre code JS pour activer le bouton de soumission dans le bloc de commentaire (<! - - >). Utilisez également la balise <noscript> pour informer le client que la fonctionnalité n'est pas disponible tant que JS n'est pas activé sur le navigateur client.

Questions connexes