2010-01-06 5 views
1

Mes codes en HTML:jQuery: Obtenir des éléments connexes ou presque?

<p><input type="text" class="txt" id="u" /><label for="u">user</label></p> 
<p><input type="text" class="txt" id="p" /><label for="p">pass</label></p> 

Javascript:

$(document).ready(function() { 
    if($('.txt').val()) { 
     //change st in related label tag 
    } 
}); 

Comment faire? S'il vous plaît, aidez-moi à résoudre ce problème. Merci beaucoup !

+2

Que signifie «changer st dans l'étiquette d'étiquette associée»? – psychotik

+0

désolé pour l'obscur – anhtran

Répondre

2

Vous pouvez faire:

$("input.txt").focus() { 
    $("label[for='" + this.id + "']").addClass("highlight"); 
}).blur(function() { 
    $("label[for='" + this.id + "']").removeClass("highlight"); 
}); 

avec:

label.highlight { background: yellow; font-weight: bold; } 

Lorsqu'un champ d'entrée a le focus, son étiquette (en supposant qu'il en a un) est mis en évidence.

Edit: Pour parcourir les entrées et faire quelque chose avec les étiquettes:

$(":input[id]").each(function() { 
    if ($(this).val() != '') { 
    $("label[for='" + this.id + "'").each(do_something); 
    } 
}); 

function do_something() { 
    // this refers to the label 
} 

ou simplement:

$(":input[id]").each(function() { 
    if ($(this).val() != '') { 
    $("label[for='" + this.id + "'").addClass("notnull"); 
    } 
}); 

ou vous pouvez aller dans l'autre:

$("label[for]").each(function() { 
    var label = this; 
    $("#" + $(this).attr("foo") + ":input").each(function() { 
    if ($(this).val() != "") { 
     $(label).addClass("notnull"); 
    } 
    }); 
}); 
+0

Si vous pouvez utiliser "this", j'ai des solutions à la "parent" et "trouver". Mais je veux demander dans ce cas ne peut pas utiliser "ceci". – anhtran

+0

Quoi? Vous ne voulez pas l'utiliser? Ou ne peut pas? Pourquoi pas? – cletus

+0

Lorsque le document est prêt, je veux vérifier la valeur des entrées. Si la valeur n'est pas nulle, je ferai quelque chose avec mes étiquettes d'étiquettes. Merci d'avoir lu. – anhtran

1

Vous pouvez d'abord rechercher les libellés et rechercher les champs de texte associés, comme par exemple:

$('label[for]').each (function() 
{ 
    var label = $(this), textfield = $('#' + label.attr('for') + '.txt'); 
    if (textfield.length && textfield.val()) 
     doSomething (label); 
}); 
+0

une belle solution. Merci ^^ – anhtran

Questions connexes