2011-07-15 3 views
1

J'ai un formulaire de soumission pour une URL et je veux qu'elle ait un comportement spécifique que je ne suis pas en mesure d'atteindre jusqu'à présent. Au départ, je veux que le bouton soit activé. Après que quelqu'un entre une URL et frappe le bouton "soumettre", je veux appeler ma fonction checkURL(). Si la fonction renvoie true, je veux désactiver le bouton et ouvrir le fichier remote_file.php. Si elle renvoie false, je veux que le bouton soit activé et les fasse essayer une autre URL.Désactiver le bouton HTML

<form name=URLSubmitForm 
    action="remote_file.php" 
    method="post"> 

    <input type="hidden" name="MAX_FILE_SIZE" value="524288000"> 
    <input type="text" name="name" size="50"> 
    <input type="submit" 
     onchange="this.disabled=false" 
     onclick="this.disabled=true; checkURL();" 
     value="submit"> 
</form> 

Modifier: Il semble que je ne faisais que mettre l'onchange au mauvais endroit. J'ai fini par le faire pour corriger le bouton réactivation

<input type="text" onchange="submit.disabled=false" name="name" size="50">

Merci!

Répondre

1

Je vous propose de joindre le code de gestion d'événement à l'événement onsubmit du formulaire, et non au (x) événement (s) de bouton. Ce que vous essayez de contrôler, c'est si le formulaire est posté. Le bouton est désactivé pendant que votre logique de validation s'exécute est un objectif secondaire.

Essayez ceci:

<script type="text/javascript"> 
function checkURL(){ 
    var submitButton = document.getElementById('submitButton'); 
    submitButton.disabled=true; 

    /* implement your validation logic here 
    if(url is invalid){ 
     submitButton.disabled=false; 
     return false; 
    } 
    */ 

    // everything is valid, allow form to submit 
    return true; 
} 
</script> 

<form name="URLSubmitForm" action="remote_file.php" onsubmit="return checkURL();" method="post"> 
     <input type="hidden" name="MAX_FILE_SIZE" value="524288000"> 
     <input type="text" name="name" size="50"> 
     <input type="submit" name="submitButton" id="submitButton" value="submit"> 
</form> 
+0

retour faux du onclick d'un bouton d'envoi est un modèle de validation commune –

+0

très utile, merci! – Corey

1
<input type="submit" 
    onclick="if (checkURL()) { this.disabled='disabled'; return true; } else { return false; }" 
    value="submit"> 
+0

Selon le [MDN Docs] (https://developer.mozilla.org/en/XUL/Property/disabled) le type de propriété 'disabled' est' boolean' –

+0

c'est bon, sauf qu'il ne réactive pas le bouton si le texte est changé dans la case – Corey

+0

il n'aurait jamais été désactivé, parce que si checkurl retourné le formulaire soumettrait et vous obtenez un démarrage propre –

0

Que diriez-vous à l'événement onsubmit la forme:

<form onsubmit="(function(){ 
    if(checkURL()){ 
     this.elements['submit'].disabled = 'disabled'; 
    } 
    else{ 
     return false; 
    } 
})()"> 

Puisque vous n'avez pas donné un code ajax, le formulaire sera toujours soumis normalement et quand la page est rechargée, le bouton sera à nouveau activé.

0

onclick = "checkURL (this);"

function checkURL(arg){ 
    this.disabled=true; 
    if(<something>) this.disabled=false; 
}