2010-02-11 8 views
0

Quelqu'un peut-il me dire pourquoi le code ci-dessous ne fonctionne pas. Je pense que ma théorie est solide, je manque juste un élément essentiel. '#tweet' est l'identifiant attribué au bouton d'envoi de formulaire. Je veux qu'il vérifie si l'entrée a moins de 141 caractères, si ce n'est pas le cas, alerter l'utilisateur et ne pas soumettre le formulaire.Jquery - pourquoi ça ne marche pas?

Actuellement, il ne fait rien.

$('#tweet').click(function() { 
    if ($('.message').val().length > 140) { 
    alert('Your message much be less than or exactly 140 characters'); 
    return false; 
    } 
    }); 
+1

pourrait vous collez la partie HTML correspondante aussi? –

Répondre

2

il peut être possible, que vos .message coups plus d'éléments!

$(document).ready(function() { 
    $('#tweet').click(function(e) { 
     var success = true; 
     $('.message').each(function() { 
      if ($(this).val().length > 140) { 
       alert('Your message much be less than or exactly 140 characters'); 
       success = false; 
      } 
     }); 
     if (!succeess) { 
      e.preventDefault(); 
     } 
     return success; 
    }); 
}); 
-3

L'ID doit être tweet pas #tweet

+0

#tweet est correct pour sélectionner un élément par ID avec jquery –

+0

Vous avez 4 downvotes J'ai pensé que quelqu'un devrait vous dire que $ ('# tweet') est absolument correct - pourquoi avez-vous pensé que ce n'était pas? – Erik

+1

Il a distinctement dit "'#tweet' est l'identifiant attribué au bouton de soumission de formulaire". Il ne devrait absolument pas avoir Dested

1

vous devez attacher votre comportement à la forme soumettre un événement:

$('form').bind('submit',function() { 
    if ($('.message').val().length > 140) { 
    alert('Your message much be less than or exactly 140 characters'); 
    return false; 
    } 
    }); 
2

Placez le code ci-dessus comme celui-ci

<script type="text/javascript"> 
$(function(){ 
    $('#tweet').click(function() { 
    if ($('.message').val().length > 140) { 
    alert('Your message much be less than or exactly 140 characters'); 
    return false; 
    } 
    }); 
}); 
</script> 

dans la section de votre code HTML après avoir inclus le fichier de bibliothèque jQuery. Comme les gestionnaires d'événements sont attachés après que le dom est prêt.

0

vous voulez probablement pour empêcher l'action par défaut au lieu de retourner faux

$('#tweet').click(function(e) { 
    if ($('.message').val().length > 140) { 
     alert('Your message much be less than or exactly 140 characters'); 
     e.preventDefault(); 
    } 
}); 
0

Pour être complet, si votre prévention par défaut, vous devriez probablement la suivante distance supplémentaire:

function stopEvent(event) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    if ($.browser.msie) { 
     event.originalEvent.keyCode = 0; 
     event.originalEvent.cancelBubble = true; 
     event.originalEvent.returnValue = false; 
    } 
} 

Il y a mroe informations à ce sujet dans ma réponse à la question suivante: jQuery form submission. Stopping page refresh only works in newest browsers

Questions connexes