Javascript - 我无法在字符串的开头连接

时间:2013-04-03 17:55:40

标签: javascript jquery string-concatenation

这就是我想要做的事情:

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

这是我的代码:

$(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”时,它的lol'ing但没有将输入值设置为“@Rick”。

任何想法为什么?

2 个答案:

答案 0 :(得分: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')
    });
});

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

答案 1 :(得分: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);
        }
    });
});