0

这是我想要做的:

检查我的字符串中是否有第一个字符“@”,如果没有,添加它。

这是我的代码:

$(document).ready(function(){

    $("#twitter").blur(function() {
            var s = $("#twitter").val();
            alert(s);
            var isAt = s.charAt(0);
            alert(isAt);
            if(isAt !== "@") {
                alert("lol");
                s = "@" + s;
            }
        });
});

问题:

当我切换到下一个输入(反过来模糊#twitter)时,当我输入“Rick”时,它很有趣,但没有将输入的值设置为“@Rick”。

任何想法为什么?

4

2 回答 2

6

改变这个:

s = "@" + s;

对此:

$("#twitter").val('@' + s);

问题是您正在更新存储在s引用中的值,但该变量和输入字段本身之间没有动态绑定(即,您仍然必须#twitter手动更新值)。


编辑:正如下面@epascarello 所建议的,这可能是一个更清洁的解决方案:

$(document).ready(function(){
    $('#twitter').blur(function() {
        var $this = $(this),
            val = $this.val();
        if (val.charAt(0) !== '@') {
            $this.val('@' + val);
        }
    });
});

而且......只是为了它,另一种方法:

$(document).ready(function(){
    $('#twitter').blur(function() {
        if (this.value.charAt(0) === '@') return;
        $(this).val(function(i, v) { return '@' + v });
    });
});

多一个...

$(document).on('blur', '#twitter', function() {
    $(this).val(function(i, v) {
        return v.replace(/(@)?(.*)/, '@$2')
    });
});

注意:你可能应该使用第一个或第二个......我在这里变得深奥......

于 2013-04-03T17:56:58.080 回答
0
$(document).ready(function(){
    $("#twitter").blur(function() {
        var s = $("#twitter").val();
        alert(s);
        var isAt = s.charAt(0);
        alert(isAt);
        if(isAt !== "@") {
            alert("lol");
            $("#twitter").val("@" + s);
        }
    });
});
于 2013-04-03T17:58:48.610 回答