我使用以下内容调用函数,然后在一个或多个具有类" textprop"的文本框中格式化文本。如果我给函数变量一个特定的文本框id(即$(#myid).val();)它可以工作,但是我无法识别"这个"。我做错了什么?
$(".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();}));
}
更新
我认为这有效,但我必须无意中拥有类型资本。以下是更新的代码,但仍然无效。
$(".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();}));
});
最终解决方案
在Charlietfl的帮助下,这是最终解决方案......
$(".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();}));
});
答案 0 :(得分:1)
为了在函数内维护this
的上下文,你需要将函数作为引用传递,而不是将它包装成匿名函数
$(".textprop").keyup(textProp);
另一种方法是使用javascript bind()
将上下文传递给函数
请注意,$('this')
应为$(this)