2013-04-03 26 views
0

的開始串聯這裏就是我想要做的:使用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'ing但不設置輸入的值「@Rick」當我輸入「Rick」時。

任何想法爲什麼?

+3

你沒有做任何與's',該功能只結束。你期望在這裏發生什麼? – asawyer

回答

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

注意:你應該使用的第一個或第二個......我越來越看過來深奧...

+3

更好,因爲'this.value ='@'+ s;'或'$(this).val('@'+ s)' – epascarello

+0

好點...讓我重構... – jmar777

+0

@ jmar777設置val是一個函數嗎? – asawyer

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); 
     } 
    }); 
}); 
相關問題