2010-10-19 5 views
1

Cela paraît simple, mais il me donne la douleur:En utilisant JQuery, comment vérifier qu'au moins une zone de texte n'est pas vide?

Essayé ceci:

function validateAddress() { 

    if (!($('<%=txtPlaceName.ClientID%>').val() === "") 
     || !($('<%=txtStreet.ClientID%>').val() === "") 
     || !($('<%=txtAddress.ClientID%>').val() === "") 
     || !($('<%=txtPostcode.ClientID%>').val() === "")) { 

     return true; 
    } 

    return false; 
} 

et ceci:

function validateAddress() { 

    if ($('<%=txtPlaceName.ClientID%>').val().length > 0 
     || $('<%=txtStreet.ClientID%>').val().length > 0 
     || $('<%=txtAddress.ClientID%>').val().length > 0 
     || $('<%=txtPostcode.ClientID%>').val().length > 0) { 

     return true; 
    } 

    return false; 
} 

mais ne semble travailler, je fais correctement?

+0

Pourquoi même utiliser les multiples conditions dans le si? Pourquoi ne pas simplement sélectionner toutes les zones de texte sur votre page et utiliser .each pour itérer sur elles retourner vrai si la longueur> 0? – Chris

+0

Voir la réponse de @Nick Craver. – mway

Répondre

2

Vous oubliez la marque de hachage pour sélectionner quelque chose par ID. Essayez:

function validateAddress() { 

    if ($('#<%=txtPlaceName.ClientID%>').val().length > 0 
     || $('#<%=txtStreet.ClientID%>').val().length > 0 
     || $('#<%=txtAddress.ClientID%>').val().length > 0 
     || $('#<%=txtPostcode.ClientID%>').val().length > 0) { 

     return true; 
    } 

    return false; 
} 
+0

cas fermé, je semble l'oublier beaucoup! Merci! – NibblyPig

+0

@SLC - Bien que cela ne résout le problème, vous pouvez rendre votre vie beaucoup plus facile, consultez mon alternative en utilisant une classe. Vous pouvez également déplacer tout votre code en dehors de la page avec cette méthode. –

+0

@Nick - Bien que votre idée semble plus claire, la classe devrait vraiment être utilisée pour les CSS, quand les pages sont écrites et transmises à l'équipe de conception, elles risquent de tout gâcher! – NibblyPig

0

Il semble qu'il vous manque le "#" dans vos sélecteurs jquery pour les ID. Essayez ceci:

if ($('#<%=txtPlaceName.ClientID%>').val().length > 0 
    || $('#<%=txtStreet.ClientID%>').val().length > 0 
    || $('#<%=txtAddress.ClientID%>').val().length > 0 
    || $('#<%=txtPostcode.ClientID%>').val().length > 0) { 
0

vous ajoutez # à l'ID de l'élément lors de l'enregistrement, en d'autres termes, est le texte produit comme celui-ci:

$('#IDOfElement').val() 
3

Pour un #ID selector vous avez besoin d'un #, comme ceci:

$('#<%=txtPlaceName.ClientID%>').val().length 

Mais le plus rapide pourrait être de leur donner une classe, par exemple CssClass="checkMe", puis vérifier ces éléments:

function validateAddress() { 
    return $('.checkMe[value!=""]').length > 0; 
} 
+1

Merci de nettoyer cela. Chaque fois qu'un programmeur régurgite quelque chose d'insensé, Dieu tue un chaton. – mway

+0

@way: Je déteste les chats. ;-) – Chris

+1

Plutôt que d'utiliser une classe CSS, vous pouvez également utiliser l'attribut HTML5 Web Forms 2.0 "required", qui sera plus sémantiquement correct et futur-compatible – cbeer

0

Je me sers des classes à la fonctionnalité du groupe, donc pour votre exemple donner à chacun l'élément d'une classe d'adresse alors votre fonction serait:

function validateAddress() { 
    $('.address').each(function() { 
    if ($(this).val().length > 0) { 
     return true; 
    } 
    } 
    return false; 
} 
Questions connexes