2017-02-01 5 views
0

Ich habe einen Eingang namens #question_title. Ich möchte eine if-Anweisung für ein Blur-Ereignis ausführen. Wenn ich versuche, die Länge zu überprüfen, kommt sie als undefiniert zurück. Irgendwelche Ideen, warum "das" hier nicht funktioniert?Warum ist "das" undefiniert?

JS

$('#question_title').on('blur', function(){ 
    console.log('this.length = ' + this.length); 
    if (this.length > 1) { 
     // do something fabulous 
    } 
}); 

HTML

<div class="form-group question-title-wrap"> 
    <label for="question_title">What is your question?</label> 
    <input type="text" class="form-control" id="question_title"> 
</div> 
+3

In diesem "blur" handler, 'this' wird für die' ' Element mit dem DOM Knotens beziehen, nicht der Wert. Versuchen Sie 'this.value.length'. – Pointy

+2

'$ (this) .val(). Length 'ist der jQuery-Weg, dies zu tun. – tadman

+0

Das ist es :) Bitte als Antwort hinzufügen. Tx –

Antwort

4

this auf das Element selbst bezieht, nicht seinen Wert, daher der Fehler undefined da es keine solche Eigenschaft ist (length) auf der Eingabeelement

Wenn Sie this.value.length verwenden, erhalten Sie den Wert und seine Länge obwohl.

$('#question_title').on('blur', function(){ 
 
    console.log('this.value.length = ' + this.value.length); 
 
    if (this.value.length > 1) { 
 
     // do something fabulous 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="form-group question-title-wrap"> 
 
    <label for="question_title">What is your question?</label> 
 
    <input type="text" class="form-control" id="question_title"> 
 
</div>