最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于jquery跨瀏覽器顯示的file上傳控件

 更新時間:2011年10月24日 23:29:52   作者:  
前面我寫過一篇短小的文章,簡要的介紹了下怎樣定義input type=file 的樣式。對于一般的表單,上傳控件較少,這樣的做法確實不錯,既減少了代碼,又美化了樣式
前面我寫過一篇短小的文章,簡要的介紹了下怎樣定義input type="file" 的樣式。對于一般的表單,上傳控件較少,這樣的做法確實不錯,既減少了代碼,又美化了樣式,原文:《定義input type="file" 的樣式

其實要實現(xiàn)給file控件定義樣式,大致思想都是一樣的。

今天看到博客園的繁花連寫兩篇文章來研究file控件
jquery.fileEveryWhere.js--一個跨瀏覽器的file顯示插件
firefox下input type="file"的size是多大

我這里也按捺不住了。成果是繁花的,以下內(nèi)容引用自上面兩篇文章:

大牛ppk都說過,在從多表單控件中,上傳文件控件的樣式是最難以控制的。見文章Styling an input type="file"。本插件也多是參考此文。

先來看看input type="file"在chrome,ie,firefox這三個瀏覽器下表情各異吧。



chrome像是button+label組合,看起差異最大。

ff和ie,是text+button的組合,就外形來看,firefox更標(biāo)準(zhǔn),事實上firefox存在兩個潛在問題:
1,firefox對type="file" 的input的width定義目前是不支持的(但是FF支持size屬性,可以給size設(shè)置一個值,來控制上傳框的大小,至于這個size到底是多大,見文章繁花-firefox下input type="file"的size是多大)。
2,火狐瀏覽器的提交file表單時只提交文件名不提交路徑,而IE提交的是路徑+文件名,chrome也能提交路徑+文件名,但只顯示文件名?;鸷鼮g覽器的提交file表單時只提交文件名不提交路徑(很遺憾,暫時沒有解決方法)

要讓file在各個瀏覽器顯示統(tǒng)一,純樣式已經(jīng)控制不了,只能用js腳本了。基本步驟有3:
1,通過文本框和按鈕去模擬一個input type=”file”。
2,把input="file"做成透明,用定位完全蓋住文本框和按鈕。
3,當(dāng)input type=”file”的onchange的時,用js將文本框的值設(shè)置成input type=”file”的值。

了解步驟后,整個插件就很好寫了,代碼如下:
復(fù)制代碼 代碼如下:

/*
* file everywhere - 瀏覽器通用文件上傳
* copyright->flowerszhong
* flowerszhong@gmail.com
* http://www.cnblogs.com/flowerszhong/
*/
(function($) {
$.fn.fileEveryWhere = function(options) {
var defaults = {
WrapWidth: 300,
WrapHeight: 30,
ButtonWidth: 60,
ButtonHeight: 28,
ButtonText: "瀏覽",
TextHeight: 28,
TextWidth: 240
};
var options = $.extend(defaults, options);
var browser_ver = $.browser.version.substr(0, 1);
var displayMode = ($.browser.msie && browser_ver <= "7") ? "inline" : "inline-block";
return this.each(function() {
//創(chuàng)建包含,設(shè)置為相對定位
var wrapper = $("<div class='fileWraper'>")
.css({
"width": options.WrapWidth + "px",
"height": options.WrapHeight + "px",
"display": displayMode,
"zoom": "1",
"position": "relative",
"overflow": "hidden",
"z-index":"1"
});
//創(chuàng)建文本輸入框,用于存放上傳文件名稱
var text = $('<input class="filename" type="text" />')
.css({
"width": options.TextWidth + "px",
"heigth": options.TextHeight + "px"
});
//創(chuàng)建瀏覽按鈕
var button = $('<input class="btnfile" type="button" />')
.val(options.ButtonText);
$(this).wrap(wrapper).parent().append(text, button);
$(this).css({
"position": "absolute",
"top": "0",
"left": "0",
"z-index": "2",
"height": options.WrapHeight + "px",
"width": options.WrapWidth + "px",
"cursor": "pointer",
"opacity": "0.0",
"outline":"0",
"filter": "alpha(opacity:0)"
});
if ($.browser.mozilla) { $(this).attr("size", 1 + (options.WrapWidth - 85) / 6.5) }
$(this).bind("change", function() {
text.val($(this).val());
});
});
};
})(jQuery);

使用很簡單:

$("input:file").fileEveryWhere({參數(shù)});



firefox對type="file" 的input的width定義目前是不支持的,但是FF支持size屬性,可以給size設(shè)置一個值,來控制上傳框的大小。
但是這個size值怎么設(shè)置,size="10"是多寬,默認(rèn)值又是多少,不能光憑感覺去設(shè)置。 用腳本來查看下:
復(fù)制代碼 代碼如下:

<script type="text/javascript">
$(function() {
var fileArray = [];
var i = 0;
while (i < 100) {
fileArray.push(i + ":<input type='file' size='" + i + "' /><br />");
i++;
}
document.write(fileArray.join(""));
$("input:file").each(function() { $(this).after("<b>" + $(this).width() + "</b>") });
});
</script>

在火狐下得到這樣的結(jié)果:


發(fā)現(xiàn)了一定的規(guī)律,默認(rèn)為208像素,size="1"時為85像素,每個size之間相差6.5個像素的寬度,所以我們可以動態(tài)的設(shè)定size的值,如:
復(fù)制代碼 代碼如下:
if ($.browser.mozilla) { $(this).attr("size", 1 + (options.WrapWidth - 85) / 6.5)

相關(guān)文章

  • 使用Jquery搭建最佳用戶體驗的登錄頁面之記住密碼自動登錄功能(含后臺代碼)

    使用Jquery搭建最佳用戶體驗的登錄頁面之記住密碼自動登錄功能(含后臺代碼)

    今天將登錄功能徹底完成,加入記住密碼自動登錄功能,密碼在客戶端進(jìn)行第一次加密存儲。并修改了一些bug,優(yōu)化js代碼,上一版本太亂了。
    2011-07-07
  • JQuery遍歷json數(shù)組的3種方法

    JQuery遍歷json數(shù)組的3種方法

    這篇文章主要介紹了JQuery遍歷json數(shù)組的3種方法,本文分別給出了使用each、for遍歷json的方法,其中for又分成兩種形式,需要的朋友可以參考下
    2014-11-11
  • jquery對象和DOM對象的區(qū)別介紹

    jquery對象和DOM對象的區(qū)別介紹

    jquery對象和DOM對象在使用過程很頻繁,正是因為如此,好多朋友都不知道它們之間有什么區(qū)別,下面為大家詳細(xì)介紹下,希望對大家有所幫助
    2013-08-08
  • 詳解layui彈窗父子窗口之間傳參數(shù)的方法

    詳解layui彈窗父子窗口之間傳參數(shù)的方法

    本篇文章主要介紹了ayui彈窗父子窗口之間傳參數(shù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • JQuery slideshow的一個小問題(如何發(fā)現(xiàn)及解決過程)

    JQuery slideshow的一個小問題(如何發(fā)現(xiàn)及解決過程)

    在做一個網(wǎng)頁homepage的時候,想用slideshow[1]做圖片切換效果,在打開頁面所以的正常測試都沒問題:當(dāng)瀏覽器同時打開多個tab,停留他tab中的頁面一段時間后,會出現(xiàn)圖片是最后一張圖片,針對這個問題,本文給予了詳細(xì)的解決方法,感興趣的朋友可以了解下
    2013-02-02
  • jquery 實現(xiàn)返回頂部功能

    jquery 實現(xiàn)返回頂部功能

    本文給大家?guī)淼氖鞘褂胘avascript結(jié)合jQuery實現(xiàn)返回頂部的功能,并附上源碼,送給大家,需要的童鞋直接拿走吧
    2014-11-11
  • struts2 jquery 打造無限層次的樹

    struts2 jquery 打造無限層次的樹

    需要:Struts2 , jquery樹插件 模擬數(shù)據(jù)庫數(shù)據(jù):每行數(shù)據(jù)包括--自己ID,自己內(nèi)容,父親ID
    2009-10-10
  • jquery實現(xiàn)員工信息添加與刪除功能

    jquery實現(xiàn)員工信息添加與刪除功能

    這篇文章主要為大家詳細(xì)介紹了利用jquery制作簡易的員工信息添加與刪除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • jquery選擇器使用詳解

    jquery選擇器使用詳解

    JQuery是一個很NB的js集成作品,以其簡潔的語法和跨平臺兼容性的優(yōu)勢,這里給大家介紹下JQuery中的選擇器,不理解選擇器或者用不好選擇器,是不可能有一手很NB的JQuery技能的
    2014-04-04
  • 為jquery的ajaxfileupload增加附加參數(shù)的方法

    為jquery的ajaxfileupload增加附加參數(shù)的方法

    這篇文章主要介紹了為jquery的ajaxfileupload增加附加參數(shù)的方法,需要的朋友可以參考下
    2014-03-03

最新評論

邵阳县| 自治县| 衡水市| 黔江区| 定襄县| 偃师市| 鄄城县| 九龙城区| 巫溪县| 广河县| 齐齐哈尔市| 洪江市| 宁陵县| 泸西县| 凤山县| 永嘉县| 板桥市| 攀枝花市| 古浪县| 遂平县| 呼伦贝尔市| 攀枝花市| 旅游| 花垣县| 元氏县| 宜春市| 疏勒县| 贵港市| 隆德县| 孟州市| 柳江县| 庄浪县| 宣威市| 红桥区| 永新县| 伊金霍洛旗| 远安县| 邢台县| 资溪县| 扬中市| 米泉市|