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



我想这样做:

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

下面是我的代码:
$(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)它是lol,但没有设置输入值为"@Rick"当我输入"Rick"。

知道为什么吗?

修改如下:

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')
    });
});

注意:你可能应该使用第一个或第二个…

$(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);
        }
    });
});

最新更新