Je fais une validation avec Jquery et je dois obtenir le label $ de chaque élément avec son propre label. Maintenant, alert () donne med [objet objet]. La meilleure chose à faire pour moi ici est d’obtenir une alerte () avec tous les champs alignés qui ne sont pas renseignés. Et pas une alerte () pour chacun.
Voici un violon: http://jsfiddle.net/s7pYX/
Comment est-ce accompli?
HTML:
<div>
<label for="txtName">Name</label>
<input type="text" id="txtName" class="form-control" name="txtName">
</div>
<div>
<label for="txtEmail">E-mail</label>
<input type="text" id="txtEmail" class="form-control" name="txtEmail">
</div>
Jquery:
$('input').each(function(){
if ($(this).val() == '') {
$element = $(this)
var $label = $("label[for='"+$element.attr('id')+"']")
alert($label)
}
});
Dans l'alerte () j'attends comme ceci "Vous devez remplir: Nom, E-mail"
Essayez d’alerter le contenu de $label
, vous pouvez utiliser .text () pour cela
$('input').each(function(){
var $element = $(this)
if ($element.val() == '') {
var $label = $("label[for='"+this.id+"']")
alert($label.text())
}
});
Démo: Fiddle
Mettre à jour
var $labels = $("label[for]");
var empties = $('input').filter(function(){
return $.trim($(this).val()) == ''
}).map(function(){
return $labels.filter('[for="'+this.id+'"]').text()
}).get().join(', ')
alert(empties)
Démo: Fiddle
Essayer
$('input').each(function(){
if ($(this).val() == '') {
$element = $(this)
var $label = $("label[for='"+$element.attr('id')+"']")
alert("You need to fill :" + $label.text())
}
});
Mettre à jour :
est-il possible d'organiser toutes les étiquettes $ dans une alerte () et pas une alerte () chacune?
Oui
var errorString ="";
var isNeedToFill=false;
$('input').each(function(){
if ($(this).val() == '') {
isNeedToFill =true;
$element = $(this)
var $label = $("label[for='"+$element.attr('id')+"']");
errorString += $label.text()+" ";
}
});
if(isNeedToFill){
alert("You need to fill :" +errorString);
}
essayer d'alerter
alert($label.text())
comme vous envoyez une variable object
à la fonction d'alerte, si vous souhaitez obtenir le contenu du libellé sélectionné, vous devez en obtenir le code html http://jsfiddle.net/s7pYX/2/
$('input').each(function(){
if ($(this).val() == '') {
$element = $(this)
var $label = $("label[for='"+$element.attr('id')+"']").html();
alert($label)
}
});
Au lieu de la ligne ci-dessous:
var $label = $("label[for='"+$element.attr('id')+"']"
Utilisez le code suivant:
var $label = $("label[for='"+$element.attr('id')+"']").text();
Vous n'obtenez que l'objet dont vous avez besoin d'utiliser les fonctions .html()
ou .text()
pour obtenir le texte à l'intérieur de la balise label.
Cochez cette D&EACUTE;MO
$('input').each(function () {
if ($(this).val() == '') {
$element = $(this);
var label = $element.closest("div").find("label").text();
alert(label)
}
});
$('input').each( function() {
var $labels = $(this).labels();
$labels.each(function(index, element){
alert($(element));
});
});
var response = "";
$('input').each(function(){
if ($(this).val() == '') {
response += ", " + $('label[for="' + this.id + '"]').html();
}
});
alert(response.replace(", ", "You need to fill out: "));
Ce n’est pas un bon exemple, mais vous pouvez utiliser la fonction prev
de jQuery qui trouvera l’étiquette précédente avant le composant sélectionné.
$(document).ready( function() {
$('input').each(function(){
alert($(this).prev("label").html())
});
});
JSFiddle: http://jsfiddle.net/gQnaM/