$(this)未得到承认

时间:2016-03-19 16:10:18

标签: jquery textbox format this

我使用以下内容调用函数,然后在一个或多个具有类" 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();}));
});

1 个答案:

答案 0 :(得分:1)

为了在函数内维护this的上下文,你需要将函数作为引用传递,而不是将它包装成匿名函数

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

另一种方法是使用javascript bind()将上下文传递给函数

请注意,$('this')应为$(this)