2010-01-06 7 views
-1

le script ne fonctionne pas: s'il vous plaît trouver la raison n remédier?problème lors de la manipulation de la zone de texte avec javascript

function validate() { 
     if(document.complain.complain.value == '' || document.complain.complain_subject.value == ''){ 
      alert("Hey! you can't left a field blank!"); 
      return false; 
     } 
else if(document.complain.complain.length >100) { 

      alert("Sorry!post the complain within 100 characters"); 
      return false; 
      } 

     else{ 
      return true; 
     } 

    } 

la forme est la suivante:

<form name="complain" method="POST" action="complains.jsp" onsubmit="return validate();"> 
<table> 
    <tr> 
     <td><input type="text" name="complain_subject" 
      value="Complain Subject here" maxlength="30"></td> 
    </tr> 
    <tr> 
     <td><textarea rows="6" name="complain" cols="73" 
      value="Complain body here" maxlength="100"></textarea></td> 
    </tr> 
    <tr> 
     <td><input type="submit" value="complain" name="operation"><input 
      type="reset" value="Reset" name="B2"></td> 
    </tr> 
</table> 
</form> 
+2

Décrivez "ne fonctionne pas". –

+0

lorsque j'appelle validate() sa se appelle si la zone de texte est vide n montrant l'alerte. Mais si je poste un message de plus de 100 caractères alors l'alerte ne s'affiche pas –

+0

s/plainte/plainte/g - plainte est un verbe. – tvanfosson

Répondre

1

Vérifier

document.complain.complain.value.length 

ou

document.getElementById ("complain").value.length 

Aussi je ne pense pas qu'il y ait un attribut maxlength à textareas.

+0

ya maxlength attribut à la zone de texte doesnt work.i vient de l'écrire pour se souvenir de la taille d'allocation de ce champ dans la base de données –

+0

Merci beaucoup.Cela m'a vraiment aidé beaucoup. –

4

essayer de vérifier la longueur de la valeur plutôt que la longueur de l'élément.

0

Cette ligne:

else if(document.complain.complain.length >100) { 

est erroné.

Il faut lire:

else if(document.complain.complain.value.length >100) { 

En outre, comme principe général, je vous conseille d'utiliser des variables locales pour rendre le code plus lisible. En outre, je recommanderais de faire la même chose de la même manière, donc si vous devez comparer pour la longueur maximum, alors utilisez la propriété de longueur aussi pour vérifier la longueur minimum. Enfin, une telle fonction peut être très difficile à suivre parce que vous avez plusieurs points de sortie. Je suggère de faire quelque chose comme:

function validate() { 
    var form = document.complain, 
     complaintMinLength = 1, complaintMaxLength = 100 
     complaintSubjectMinLength = 1, 
     complaintLength = form.complain.value.length, 
     complaintSubjectLength = form.complain_subject.value.length, 
     valid, msg 
    ; 
    if (complaintLength < complaintMinLength || 
     complaintSubjectLength < complaintSubjectMinLength) { 
     valid = false; 
     msg = "Hey! you can't leave a field blank!"; 
    } else if (complaintLength > complaintMaxLength) { 
     valid = false; 
     msg = "Sorry! Your message exceeds the maxumum length of " + complaintMaxLength + " characters."; 
    } else { 
     valid = true; 
    } 
    if (!valid){ 
     alert(msg); 
    } 
    return valid; 
} 
Questions connexes