亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

完美解決在ModalPopupExtender中使用CalendarExtender時被層遮擋的問題

 更新時間:2009年11月24日 20:33:12   作者:  
ASP.NET AJAX Control Toolkit是一組非常不錯的基于asp.net的ajax控件,它建立在asp.net 3.0的ScriptManager組件之上,提供了很多非常實用的效果和功能。
大家可以去官方網(wǎng)站查看demo,ModalPopupExtender控件用來在網(wǎng)頁中實現(xiàn)類似于模式對話框的效果,而CalendarExterder控件提供日期輸入,它有幾個很重要的屬性:

TargetControlID:日期輸入的目標控件ID,一般來說都都是一個文本框。
Format:日期格式,如yyyy-MM-dd。
PopupButtonID:用戶打開日期選擇面板的控件ID,如按鈕,圖片等。
PopupPosition:設(shè)置日期選擇面板打開的位置,這個是相對于TargetControlID所在控件的位置的。有幾個可選的值:BottomLeft,BottomRight,Left,Right,TopLeft,TopRight。
  一般來說我們只需要設(shè)置這幾個屬性就可以滿足應(yīng)用了,除非你想自定義日期選擇面板的顯示樣式,這時你需要自己給定CssClass。這里是一個例子。
復(fù)制代碼 代碼如下:

<asp:TextBox ID="tbBeginTime" runat="server" CssClass="singleText" MaxLength="10" Width="90"></asp:TextBox>
<asp:Image ID="imgBeginTime" ImageUrl="/upload/2009-11/20091124203311125.png" runat="server" />
<ajaxToolkit:CalendarExtender ID="CalendarExtenderBeginTime" Format="yyyy-MM-dd" TargetControlID="tbBeginTime" PopupButtonID="imgBeginTime" runat="server">
</ajaxToolkit:CalendarExtender>

  網(wǎng)上有人說這個控件打開的日期選擇面板會被下拉列表擋住,好像在早期的版本中會存在這個問題,現(xiàn)在新的版本已經(jīng)修正了這個bug。我所遇到的問題是在ModelPopupExtender控件中使用CalendarExtender,日期選擇面板會被后面的ModelPopupExtender擋住。有關(guān)ModelPopupExtender的使用讀者可以看看官方網(wǎng)站的例子,很簡單,這里我就不多說了??匆幌聠栴}的截圖。
2009-11-24 9-52-45看到了吧!CalendarExtender彈出的日期選擇面板被后面的ModelPopupExtender擋住了。我在Google上搜了一些資料,大多都是講怎么重新設(shè)置CalendarExtender控件的樣式,指定層的z-inde屬性等,但我嘗試過都失敗了,其中有人說在IE6下測試是可以的,不過我沒有驗證過,因為我現(xiàn)在也找不到裝有IE6的機器了,沒有環(huán)境,自然測不了。

  其實在FireFox下用Firebug查看頁面生成的html,你會看到ModelPopupExtender樣式中的z-index和CalendarExtender是相同的,這估計是Ajax Toolkit控件中的一個bug,應(yīng)該所有類似于這樣的控件都會存在這個問題,即在層上打開層,后打開的層會被之前的層擋住,因為它們的z-index都是相同的。想要日期輸入面板不被后面的“模式對話框”擋住,只能是將它的z-index設(shè)得更大點,但是單純的css修改又沒有效果,因為這個日期輸入面板是動態(tài)生成的,伴隨著里面的css,所以你預(yù)先設(shè)置它的樣式是沒有用的,除非你修改控件的源代碼。

  后來在網(wǎng)上查到了一個資料,其實CalendarExtender控件有幾個客戶端事件可以用,其中有一個OnClieckShown,是在日期輸入面板打開后觸發(fā)的,于是我們可以從這里下手,通過腳本來設(shè)置z-index的值。下面是代碼。
復(fù)制代碼 代碼如下:

<script type="text/javascript">
// Ensure the calendar panel was shown on the top level.
function calendarShown(sender, args) { sender._popupBehavior._element.style.zIndex = 1000005; }
</script>

  原本ModelPopupExtender的z-index值就已經(jīng)很高了,這恐怕是控件的設(shè)計者擔心它會被其它層擋住的原因吧。我們將日期選擇面板的z-index值再設(shè)高一點,然后在控件中添加OnClientShown="calendarShown",保存后重新查看頁面。
2009-11-24 9-54-36一切搞定!看來CalendarExtender控件提供的幾個腳本事件還是很有用的,讀者可以自己去研究下其它幾個腳本事件的用途。還有一個需要注意的地方,CalendarExtender控件雖然提供了一個非常棒的日期輸入功能,但是它本身并不對目標控件中的值進行驗證。例如那個文本框,用戶是可以手動填寫內(nèi)容的,這時CalendarExtender并不對其中的值進行校驗,除非你將文本框設(shè)置為只讀,這時又會有一個問題,那就是用戶如何清除里面的值呢?看來還需要自己寫代碼驗證一下文本框里的值。結(jié)合上面給出的代碼,我們可以在給文本框添加一個客戶端onblur事件,當它失去焦點的時候,驗證其中的值。下面是用來進行驗證的js代碼。
復(fù)制代碼 代碼如下:

function CheckDate(Inobj) {
Inobj.value = trim(Inobj.value);
if (Inobj.value != "") {
var reg = /^\d{8}$/;
if (Inobj.value.match(reg) != null) {
Inobj.value = Inobj.value.substring(0, 4) + "-" + Inobj.value.substring(4, 6) + "-" + Inobj.value.substring(6, 8);
}
reg = /^([1-2]\d{3})-(([1][0-2])|(0?[1-9]))-(([3][0-1])|([1-2][0-9])|(0?[1-9]))$/;
if (Inobj.value.match(reg) == null) {
alert("輸入日期的格式不正確!");
Inobj.value = "";
Inobj.focus();
}
}
}

//移除字符串中的空格
function trim(s) {
var s2="";
for(i=0;i<s.length;i++) {
if(s.charAt(i)!=" ") s2=s2+s.charAt(i);
}
return s2;
}

然后在文本框中添加onblur="CheckDate(this);"。這樣,當用戶輸入非法值后,程序提示用戶然后清空其中的值。

相關(guān)文章

  • Entity Framework管理并發(fā)

    Entity Framework管理并發(fā)

    這篇文章介紹了Entity Framework管理實現(xiàn)并發(fā)的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • .NET或.NET Core Web APi基于tus協(xié)議實現(xiàn)斷點續(xù)傳的示例

    .NET或.NET Core Web APi基于tus協(xié)議實現(xiàn)斷點續(xù)傳的示例

    這篇文章主要介紹了.NET或.NET Core Web APi基于tus協(xié)議實現(xiàn)斷點續(xù)傳的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 通過.NET 6實現(xiàn)RefreshToken

    通過.NET 6實現(xiàn)RefreshToken

    當獲取到的Token過期以后,我們必須要重新請求認證接口以獲取新的Token,為了提升用戶體驗,我們一般會利用Refresh Token功能,本文將具體為大家介紹一下如何實現(xiàn)Refresh Token,感興趣的可以學(xué)習(xí)一下
    2022-01-01
  • .net發(fā)送郵件實現(xiàn)代碼

    .net發(fā)送郵件實現(xiàn)代碼

    代碼基本上可以實現(xiàn)郵件的發(fā)送,但是在測試時卻在 smtp.Send(objMail);處顯示“發(fā)送郵件失敗”,最后發(fā)現(xiàn)的問題是,我的殺毒軟件對郵件發(fā)送接收進行了保護,只需去掉保護就能夠發(fā)送成功了。
    2009-02-02
  • 關(guān)于.net(C#)中的跨進程訪問的問題

    關(guān)于.net(C#)中的跨進程訪問的問題

    C# 跨進程訪問實現(xiàn)代碼。
    2009-04-04
  • ASP.NET技巧:教你制做Web實時進度條

    ASP.NET技巧:教你制做Web實時進度條

    ASP.NET技巧:教你制做Web實時進度條...
    2006-09-09
  • ASP.NET在MVC控制器中獲取Form表單值的方法

    ASP.NET在MVC控制器中獲取Form表單值的方法

    這篇文章主要介紹了ASP.NET在MVC控制器中獲取Form表單值的方法,涉及asp.net在MVC控制器中基于FormCollection類操作表單的相關(guān)技巧,需要的朋友可以參考下
    2016-08-08
  • ASP.NetCore使用Swagger實戰(zhàn)

    ASP.NetCore使用Swagger實戰(zhàn)

    這篇文章主要介紹了ASP.NetCore使用Swagger實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • ASP.NET配合jQuery解決跨域調(diào)用的問題

    ASP.NET配合jQuery解決跨域調(diào)用的問題

    這篇文章主要介紹了ASP.NET配合jQuery解決跨域調(diào)用的問題,簡單實用,需要的朋友可以參考下。
    2016-06-06
  • MVC4制作網(wǎng)站教程第三章 修改用戶組操作3.3

    MVC4制作網(wǎng)站教程第三章 修改用戶組操作3.3

    這篇文章主要為大家詳細介紹了MVC4制作網(wǎng)站教程,修改用戶組功能的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08

最新評論