2012-04-09 4 views
0

Ich habe ein Formular mit dynamischen Steuerelementen, die mit jQuery erstellt wurden. Ich habe die Kontrollen mit jQuery validiert. Ich überprüfe die Einstellungen für das Blur-Ereignis. Das Problem hier ist, dass ich den Fokus auf das gleiche Steuerelement setzen muss, wo die Validierung bei Blur-Ereignissen fehlschlägt.Stellen Sie den Fokus auf das gleiche Steuerelement ein, bei dem die Validierung beim Blur-Ereignis fehlschlägt. JQuery

Ich habe so etwas getan:

$(propVal1).blur(function() { 
    if(!ValidateNumber(this, propName1)) { 
     alert('Value should be numeric in ' + propName1); 
     setTimeout(function() {$(this).focus();}, 1); 
    } 
}); 

Wo propVal1 eine Eingangskontrolle darstellen dynamisch erstellt, propName1 ist der String Namen der Eigenschaft.

+0

Warum funktioniert das, was Sie jetzt haben, nicht für Sie? –

+0

können wir die Zeichenfolge sehen, auf die sich propVal1 bezieht? –

+0

Ja, weil die Validierung richtig ausgelöst wird und der Eigenschaftsname korrekt angezeigt wird. Ich mache das so, wie das gesamte Formular dynamisch generiert wird. – IrfanRaza

Antwort

1

Der Grund dafür ist, dass Ihr Eingabesteuerelement das einzige Steuerelement im Fenster ist. Nachdem es den Fokus verliert, verliert das gesamte Fenster den Fokus und Sie können keine Eingabe in einem Fenster fokussieren, das nicht den Fokus hat .

Dies ist der Test html ich dies bestätigen gemacht:

<form> 
    <input id="my_input" type="text" /> 
    <input id="my_input2" type="text" /> 
</form> 

<script type="text/javascript"> 
    $("#my_input").blur(function() { alert('bad input'); setTimeout(function() { $(window).focus(); $("#my_input").focus() }, 1); return false } ); 
</script> 

Wenn Sie den Code, um den zweiten Eingang auf Kommentar wird nicht funktionieren!

Eine mögliche Lösung ist eine unsichtbare Eingabe nach Ihrer Eingabe, um den Fokus zu erfassen, wenn die erste verwischt.

Verwandte Themen