在此次迭代中,留言回復(fù)模塊中有一個(gè)輸入字符,計(jì)算剩余字?jǐn)?shù)的功能。本不是什么大功能,但是需要兼容pc和移動(dòng)。

是利用keyup(當(dāng)鍵盤(pán)毽子彈起)事件方法進(jìn)行計(jì)算,做的時(shí)候就擔(dān)心移動(dòng),pc是肯定是好用的。不知道移動(dòng)能不能識(shí)別,畢竟它的鍵盤(pán)和真實(shí)的鍵盤(pán)有區(qū)別。功能做完后,趕快用手機(jī)去測(cè)試,發(fā)現(xiàn)是好用的,暗暗欣喜,就和qa說(shuō)留言做好了,可以測(cè)試了。在qa的專(zhuān)業(yè)測(cè)試后,說(shuō)復(fù)制粘貼后的內(nèi)容,剩余字?jǐn)?shù)不變...
$('#text').keyup(function(){
var curLength=$(that._els.replay).val().trim().length;
if(curLength>140)
{
var num=$(that._els.replay).val().trim().substr(0,140);
$(that._els.replay).val(num);
//alert("超過(guò)字?jǐn)?shù)限制,多出的字將被截?cái)啵? );
}
$("#textCount").text($(that._els.replay).val().trim().length);
}
});
因?yàn)檎迟N的事件并不屬于keyup,所以并不能識(shí)別。然后就換了一個(gè)change事件,可是問(wèn)題有來(lái)了,換成change之后,死活不觸發(fā)事件。查了一下資料,原來(lái):
change事件在內(nèi)容改變(兩次內(nèi)容有可能是相等的)且失去焦點(diǎn)時(shí)觸發(fā)
代替事件
propertychange事件實(shí)時(shí)觸發(fā),即每增加一個(gè)字符或者刪除一個(gè)字符就會(huì)觸發(fā),通過(guò)js也會(huì)觸發(fā)(任何屬性改變),但是該事件為ie專(zhuān)有
input是ie之外大多數(shù)瀏覽器支持的事件,在value改變時(shí)觸發(fā),實(shí)時(shí)的。然而,通過(guò)js改變時(shí),卻不會(huì)觸發(fā)
用jquery實(shí)現(xiàn)方法
$('#text').bind('input propertychange','textarea',function(){
var curLength=$(that._els.replay).val().trim().length;
if(curLength>140)
{
var num=$(that._els.replay).val().trim().substr(0,140);
$(that._els.replay).val(num);
//alert("超過(guò)字?jǐn)?shù)限制,多出的字將被截?cái)啵? );
}
$("#textCount").text($(that._els.replay).val().trim().length);
}
});
注意!input和propertychange要通過(guò)動(dòng)態(tài)綁定來(lái)實(shí)現(xiàn)。
其中還遇到的問(wèn)題是最開(kāi)始的時(shí)候以為bind后面的input為html的元素,如果是textarea只需要把input換成textarea就可以。不然,此處的input是指jquery里面input事件,不要混淆。指定是input還是textarea需要在綁定的事件之后。