2012-06-02 11 views
5

Ich 1.7.2, in dem unter Verwendung verstehe ich dies funktionieren soll:Wie lösen Sie ein Unschärfe-/Fokusereignis in einem Eingabetextfeld mit jquery aus?

// cell is a jquery representation of a <td> element 
cell.append($("<input/>", { "type": "text" }).val(content));   
cell.children()[0].focus(); 
cell.children()[0].on("blur", function() { 
    alert("blur"); 
} 

Das Eingabefeld angehängt wird, Greifer konzentrieren und dann die JavaScript-Konsole sagt mir:

Uncaught TypeError: Object #<HTMLInputElement> has no method 'on' 

Ich würde Sei dankbar, wenn jemand weiß, wie ich das Unschärfe-/Fokusereignis erfassen kann.

Antwort

4

Sie den Zugriff auf das DOM-Element mit [0] und zu handeln, wie es ist aj Abfrageobjekt

Wenn Sie nur die erste möchten, müssen Sie eq() verwenden, um das jQuery-Objekt abzurufen.

cell.children().eq(0).focus().on("blur", function() { 
    alert("blur"); 
}; 
4

Sie sollten Delegat Ereignis dh binden. Live-Ereignis an diese Eingänge, weil sie später an DOM angehängt wurden, so dass sie Live-Event-Handler benötigen.

$(cell).on('blur focusout', ':text', function() { 
    alert(this.value); 
}); 

dann auslösen wie folgt vor:

$(':input:first', cell).blur(); // or $(':text', cell).trigger('blur'); 

$(':input:first', cell).focusout(); // or $(':text', cell).trigger('focusout');. 

nach Ihren Code

cell.children(':input:eq(0)').focus().on("blur", function() { 
    alert("blur"); 
}; 

oder

cell.children(':input:first').focus().on("blur", function() { 
    alert("blur"); 
}; 
0

Du .on auf einem DOM-Element aufrufen, nicht jQuery-Objekt, versuchen Sie dies:

var input = $("<input/>", { "type": "text", val: content }); 
cell.append(input); 
input.focus(); 
input.on("blur", function(){ 
    alert("blur"); 
});