jQuery計算文本框字數方法
- $(function(){
- var $tex = $(".tex");
- var $but = $(".but");
- var ie = jQuery.support.htmlSerialize;
- var str = 0;
- var abcnum = 0;
- var maxNum = 280;
- var texts= 0;
- var num = 0;
- var sets = null;
- $tex.val("");
- //頂部的提示文字
- $tex.focus(function(){
- if($tex.val()==""){
- $("p").html("您還可以輸入的字數<span>140</span>");
- }
- })
- $tex.blur(function(){
- if($tex.val() == ""){
- $("p").html("請在下面輸入您的文字:");
- }
- })
- //文本框字數計算和提示改變
- if(ie){
- $tex[0].oninput = changeNum;
- }else{
- $tex[0].onpropertychange = changeNum;
- }
- function changeNum(){
- //漢字的個數
- str = ($tex.val().replace(/\w/g,"")).length;
- //非漢字的個數
- abcnum = $tex.val().length-str;
- total = str*2+abcnum;
- if(str*2+abcnum<maxNum || str*2+abcnum == maxNum){
- $but.removeClass()
- $but.addClass("but");
- texts =Math.ceil((maxNum - (str*2+abcnum))/2);
- $("p").html("您還可以輸入的字數<span>"+texts+"</span>").children().css({"color":"blue"});
- }else if(str*2+abcnum>maxNum){
- $but.removeClass("")
- $but.addClass("grey");
- texts =Math.ceil(((str*2+abcnum)-maxNum)/2);
- $("p").html("您輸入的字數超過了<span>"+texts+"</span>").children("span").css({"color":"red"});
- }
- }
- //按鈕點擊
- $but.click(function(){
- if($(this).is(".grey")){
- sets = setInterval(flash,100);
- $tex.addClass("textColor")
- }
- function flash(){
- num++;
- if(num == 4){
- clearInterval(sets);
- }
- if(num%2 == 1){
- $tex.addClass("textColor")
- }else{
- $tex.removeClass("textColor")
- }
- }
- })
- })
一、功能:
用戶邊輸入計算同時進行,告訴用戶還剩余多少可輸入的字數;
當超過規定的字數后,點擊確定,會讓輸入框閃動
二、功能分析
重點是用什么事件?
標準瀏覽器用oninput,而IE則使用onpropertychange ,這兩個事件的發生條件,是文本框的值發生改變。
字數的計算。
一個中文算兩個,一個符號或數字,英文,算一個。(如果是規定140個字,乘以2,那么就是280個)。需要用到Math.ceil方法,因為***還是要除以2來還原顯示給用戶的字數;
閃動背景色
這里用到了模運算,因為是重復的動作,***次有顏色,第二次沒有顏色,這樣重復的動作,就有閃動效果.
因為肉眼要看到這二次有顏色和無顏色的效果,所以需要用到延時,setTimeout和setInterval. 這里用到的是setInterval,因為要重復動作。
原文鏈接:http://www.cnblogs.com/lufy/archive/2012/06/05/2537016.html
【編輯推薦】