这就是我想要做的事情:
检查我的字符串中是否有第一个字符“@”, 如果没有,请添加它。
这是我的代码:
$(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”。
任何想法为什么?
答案 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);
}
});
});