asp.net在應用母版的頁面下采用了ModalPopupExtender彈出窗中應用autocomplete

autocomplete是jqueryUI的一個插件,能夠實現自動填充的功能。javascript

要點:一、應用了母版頁,因此取頁面上控件的ID時與通常方法不一樣css

二、因爲用了ajax的updatepanel,因此會出現第一次能夠正常顯示,updatepaenl更新頁面之後就不行了(頁面刷新後第二次就沒法正常使用)的問題html

三、在ModalPopupExtender關聯的PANEL中應用時,autocomplete下拉框總是顯示在底層,被PANEL覆蓋,沒法正常使用java

本次用法:在界面上updatepanel中放置兩個TEXTBOX控件:txtBox一、txtBox二、查詢按鈕;在ModalPopupExtender關聯的PANEL中放置txtBox三、及保存按鈕jquery

txtBox1中放置從數據庫中讀取的記錄值,以逗號分隔;txtBox二、txtBox3關聯autocomplete,顯示一樣的內容。在腳本中實現將txtBox1中的值傳給數組,而後添加到autocomplete下拉框,而後分別關聯到txtBox二、txtBox3。ajax

實現:數據庫

在源中添加引用及實現腳本數組

<%@ Page Title="測試" Language="C#" MasterPageFile="~/Mast.master" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="WeihuJzxDtxx" %>

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">  


能夠隱隱約約網上的也能夠引用本身本地的(本地的注意js前是/不是~/),樣式也能夠在母版頁中引用
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
   <%--<link rel="stylesheet" href="/js/jquery-ui.css" />--%>
   <%--<link rel="stylesheet" href="/js/jquery.ui.autocomplete.css" />--%>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

    <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
    </asp:ScriptManagerProxy>
    <script type ="text/javascript">

//下面一句實現頁面局部刷新時autocomplete任然有效 Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(onPageLoaded); function onPageLoaded() {
var getValue = document.getElementById('<%=txtBox1.ClientID%>').value; var availableTags = getValue.split(","); $("#ctl00_ContentPlaceHolder1_txtBox2").autocomplete({ source: availableTags }); $("#ctl00_ContentPlaceHolder1_txtBox3").autocomplete({ source: availableTags }); }; </script>

腳本中取應用母版頁的頁面上的控件的ID:document.getElementById('<%=txtBox1.ClientID%>')或直接寫爲ctl00_ContentPlaceHolder1_txtBox2測試

避免單擊txtBox3時autocomplete下拉框被遮擋:修改jquery-ui.css中autocomplete的值以下 ,增長z-index: 100000000000000000000000000000000;
使其始終保持在最上層(日曆控件被遮擋也是採用這種修改方法)
ui

.ui-autocomplete {
    position: absolute;
    top: 0;
    left: 0;
    cursor: default;
     z-index: 100000000000000000000000000000000;
}

在母版中引用本地放置的樣式方法

 

<link href="App_Themes/jquery-ui.css" rel="stylesheet" type="text/css" />

 

參考文件1:

http://jqueryui.com/autocomplete/

<!doctype html>
 
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>jQuery UI Autocomplete - Default functionality</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css" />
  <script>
  $(function() {
    var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "JavaScript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme"
    ];
    $( "#tags" ).autocomplete({
      source: availableTags
    });
  });
  </script>
</head>
<body>
 
<div class="ui-widget">
  <label for="tags">Tags: </label>
  <input id="tags" />
</div>
 
 
</body>
</html>

參考文件2:

http://bbs.csdn.net/topics/390008006

 <asp:ScriptManager ID="ScriptManager1" runat="server">

    </asp:ScriptManager>
       <script type="text/javascript" language="javascript">

//給ScriptManager的實例 添加加載成功後須要執行的js方法
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(onPageLoaded);


function onPageLoaded(sender, args) {
   
        alert("here"); 
        
        function formatItemForLog(row){
      
       return  row[0];
       }  
           
        $("#auto").autocomplete("GetProjectPhasesList.aspx?UnitID=18",{
                scroll:true,
                formatItem:formatItemForLog,
            cacheLength:0,             
            delay:500,    
            width:'150px',          
            selectFirst:false,
            notRedirect:false     
                });
                
        alert("here2")
}

</script> 
相關文章
相關標籤/搜索