2017-09-06 2 views
1

J'ai un ensemble de champs d'entrée qui sont générés dynamiquement, donc je ne peux pas utiliser un ID. Pour chacun des champs d'entrée j'ai une méthode de mise au point qui valide la valeur entrée par l'utilisateur final. Si la validation échoue, je voudrais effacer la valeur de l'entrée et ramener le focus à la même entrée. Lorsque j'ai essayé d'utiliser ce mot clé, l'étendue semble être définie sur les fenêtres plutôt que sur le contrôle d'entrée.Obtenir le sélecteur d'entrée en utilisant ce

Entrée champs capture d'écran:

Input fields screenshot

function validate(reg){ 
debugger; 
if(isNaN(reg)==false){ 
    return; 
} 
else 
{ 
    alert("The field should contain number"); 
    $(this).val(""); //clear the value 
    $(this).focus(); 
} 
} 

Dans le code ci-dessus, ce mot-clé ne semble pas fonctionner.

+0

d'où sont u appellent valider? – jANVI

+0

du champ de saisie, événement onfocusout appellera cette méthode –

+0

S'il vous plaît montrer le code exact pour appeler/attacher l'auditeur, il ya la source de l'échec. – Teemu

Répondre

0

Transmettez l'événement à validate(), puis vous pouvez utiliser event.target pour cibler l'élément d'entrée.

function validate(reg, e){ 
 
debugger; 
 
if(isNaN(reg)==false){ 
 
    return; 
 
} 
 
else 
 
{ 
 
    alert("The field should contain number"); 
 
    $(e.target).val(""); //clear the value 
 
    $(e.target).focus(); 
 
} 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input onfocusout="validate(this.value, event)"/> 
 
<input onfocusout="validate(this.value, event)"/> 
 
<input onfocusout="validate(this.value, event)"/>

Est-ce que vous essayez d'accomplir?

+0

Merci cela fait. Comme Teemu l'a suggéré, je ne passais pas l'événement. –

0

Une autre méthode:

$(document).ready(function() { 
 
    var inputs = document.querySelectorAll("input[type=text]"); 
 
    for (i = 0; i < inputs.length; i++) 
 
     inputs[i].addEventListener("focusout", function() { validate(this); }); 
 
}); 
 

 
function validate(reg) { 
 
    if (isNaN($(reg).val()) == false) { 
 
     return; 
 
    } 
 
    else { 
 
     alert("The field should contain number"); 
 
     $(reg).val(""); //clear the value 
 
     $(reg).focus(); 
 
    } 
 
}
<input type="text" value="" /> 
 
<input type="text" value="" /> 
 
<input type="text" value="" /> 
 
<input type="text" value="" />