天天看點

【jQuery】利用淡入淡出效果實作相容IE6的告警提示

其實我覺得告警提示的話,直接用一個Alert就最好的。開門見山,直接讓使用者明白你目前系統的意思,關鍵是Alert這東西就是再破的浏覽器都必須相容,不然你它丫的做毛浏覽器啊?但是,在現在越來越覺得Alert不美觀,而且開始有“彈窗挺吓人”的思潮,是以,告警提示你必須做得好看一點。在Javascript的透明度的操控比較艱難的前提下,jQuery的簡單淡入淡出效果是你的選擇。之是以選擇jQuery,是因為這東西能夠很好地相容IE6。

一、基本目标

當輸入框的輸入内容的字元數無論中文與英文大于10的情況下。就彈出告警,具體效果如下,在IETest的IE6環境中測試通過。

【jQuery】利用淡入淡出效果實作相容IE6的告警提示

二、HTML布局

這裡使用了div布局,沒有使用表格布局。具體的float布置,可以參考《【CSS】關于div的對齊與網頁布局》(點選打開連結),這裡就不多說了,很簡單的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="js/jquery-1.11.1.js"></script>
<title>告警提示</title>
</head>

<body>
<div style="float:left;">内容:</div><div id="errMsg" style="color:#ff0000;display:none;float:left;">錯誤!</div>
<div style="clear:both;"></div>
<p>
<textarea οnchange="errTipsAlert(this)"></textarea><br />
</p>
</body>
</html>
           

這是,希望大家注意到,這個告警函數是通過多行文本框的onchange觸發的,觸發的時候把自己傳遞給那個函數。同時告警文本已經設定好,隻是一開始處于隐藏狀态。

同時注意打頭引入jquery。

三、jquery腳本

這裡之是以用到FadeTo0的方式去淡出,而不像《【jQuery】使用JQ來編寫最基本的淡入淡出效果》(點選打開連結)用show()與hide()顯示,是因為show()與hide()沒有淡入淡出的效果。而FadeIn與FadeOut會發生文字的移位的,不好看。

<script>
function errTipsAlert(obj){
	//obj把自己傳遞過來了,如果多行文本框裡面的内容多于10個字
	if(obj.value.length>10){
		//那麼錯誤提示文本errMsg就一開始在1秒之内透明度從0變成1,之後又在1秒之内透明度從1變成0,再同理變回來,進而實作淡入淡出的閃爍提示。
	   	$("#errMsg").fadeTo(1000,1).fadeTo(1000,0).fadeTo(1000,1);
		//然後多行文本框的邊框加粗,變紅
		$(obj).css("border","2px solid #ff0000");
	}
	else{
		//否則錯誤提示文本errMsg就在1毫秒内透明變變成0,相當于hide()方法,但是hide()在某些情況下會發生移位。
		$("#errMsg").fadeTo(1,0);
		//恢複多行文本框的邊框
		$(obj).css("border","1px solid #cccccc");
	}		
}
</script>
           

多行文本框就不要設定動畫了。雖然你可以像《【jQuery】JQ循環動畫與擷取元件尺寸》(點選打開連結)那樣對borderwidth屬性設定動畫,但是這個動畫非常卡的。是以最好還是不要這樣做。