2016-03-19 34 views
0

Ich verwende Folgendes, um eine Funktion aufzurufen, formatiere dann Text in einem oder mehreren Textfeldern mit der Klasse "textprop". Wenn ich der Funktionsvariablen eine spezifische ID für das Textfeld gebe (d. H. $ (# Myid) .val();), funktioniert es, aber ich kann nicht erkennen, dass "dies" ist. Was mache ich falsch?

$(".textprop").keyup(function(){ 
    textProp(); 
}); 

function textProp() { 
    var str = $('this').find('.textprop').val(); 
    str.val(str.replace(/\b\w+/g,function(s){return s.charAt(0).toUpperCase() + s.substr(1).toLowerCase();})); 
} 

UPDATE

Ich dachte, das gearbeitet, aber ich muss versehentlich Art Kapital haben. Der folgende Code ist aktualisiert, funktioniert aber immer noch nicht.

$(".textprop").keyup(function(){ 
    var str = $(this).find('.textprop').val(); 
    str.val(str.replace(/\b\w+/g,function(s){return s.charAt(0).toUpperCase() + s.substr(1).toLowerCase();})); 
}); 

ENDLÖSUNG

Mit Charlietfl Hilfe, hier die endgültige Lösung ist ...

$(".textprop").keyup(function(){ 
    var str = $(this).val(); 
    $(this).val(str.replace(/\b\w+/g,function(s){return s.charAt(0).toUpperCase() + s.substr(1).toLowerCase();})); 
}); 

Antwort

1

Um Zusammenhang mit this innerhalb der Funktion erhalten zu können, muss das passieren Funktion als Referenz, anstatt es um eine anonyme Funktion zu wickeln

$(".textprop").keyup(textProp); 

Eine Alternative wäre Javascript zu verwenden bind() den Kontext der Funktion

Hinweis zu passieren, dass $('this')$(this)

+0

Das funktionierte sein sollte! Mir war nicht klar, anonyme Funktionen zu benutzen. Danke für die Klarstellung. –

+0

Ich glaube, ich sprach zu bald, da es nicht zu funktionieren scheint. Habe ich das richtig gemacht? –

+0

Siehe Update auf Frage –