jsGears.com 技術論壇 - AJAX, JavaScript, jQuery, 網站開發, 前端效能優化's Archiver

lyndon1104 發表於 2009-9-25 16:42

想在右邊加入按鈕

版大您好:

小弟參考您的範例
但想要在輸入框右邊加入下拉的按鈕
以表示這個值有auto-complete的功能
如: [url=http://evaqoo.blogdns.net/jquery-autocomplete/test/test.html]http://evaqoo.blogdns.net/jquery-autocomplete/test/test.html[/url]

原始碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" c>
<link rel="stylesheet" type="text/css" href="css/jquery.autocomplete.css" />     
<script type="text/javascript" src="js/jquery.js"></script>  
<script type="text/javascript" src="js/jquery.autocomplete.js"></script>
<script type="text/javascript">  
$(function() {   
var data = ['台北市中正區','台北市大同區','台北市中山區','台北市松山區','台北市大安區'];      
  $("#t1").autocomplete(data,  {minChars: 0,autoFill: true,matchContains: true, mustMatch: true});      
  $("#b1").bind("click",function(e){
                $("#t1").search(e);
        });      
});   
</script>
</head>

<body>
<input type="text" name="t1" id="t1" /><input type="button" id="b1" value="▼">  
<span></span>
</body>
</html>

但似乎沒辦法

請教是否有方法可行?

謝謝

[[i] 本帖最後由 lyndon1104 於 2009-9-25 16:43 編輯 [/i]]

wmh 發表於 2009-9-26 09:23

你希望做到什麼樣的功能呢?按下旁邊的按鈕可以有作用嗎?還是只是裝飾的樣式?

若是裝飾的樣式,可以在原本的輸入框透過 CSS 指定一個背景圖即可。

lyndon1104 發表於 2009-9-26 15:54

抱歉沒說清楚
就是按下旁邊的按鈕,在輸入框沒有key任何字的情況下,
也會顯示出auto-complete所設定的預設值
能夠做到嗎?
謝謝

wmh 發表於 2009-9-28 22:35

稍微看了一下,似乎沒有這樣的功能喔...

lyndon1104 發表於 2009-9-30 09:55

嗯,還是謝謝您....

chiyuan1980 發表於 2010-1-28 11:34

請問~
<script type="text/javascript">
$(function() {
    var data = ['abc','acd','bad','cde,'aac];
    $("#t1").autocomplete(data, { matchContains: true });
   });
</script>


這樣有辦法
當我輸入
a
時只出現

abc
acd
aac

a開頭的提示字?

而不是
出現
abc
acd
bad
aac

中文也一樣

因為我現調屬性幾乎都沒變成我希望的~
謝謝!

wmh 發表於 2010-1-28 16:29

[b]回復 [url=http://jsgears.com/redirect.php?goto=findpost&pid=1050&ptid=114]86#[/url] [i]chiyuan1980[/i] [/b]

把 matchContains 改成 false 就可以囉

WILLIAMer 發表於 2010-2-9 11:40

遇到了一個問題
不知道有沒有人也一樣

我在單獨的jsp中執行沒問題
但如果以下兩種情況
1.這支jsp include其他jsp
2.這支jsp被其他頁面include
都會出現error message
IE是Object doesnt support this property or method
FF是autocomplete is not a function

本來是以為沒呼叫成功
不過我在jquery.autocomplete.js加入測試function
且呼叫它是有執行的
所以並不是jquery.autocomplete.js沒載入

試過等每個頁面的DOM都載入後才執行
也是一樣的錯誤訊息

目前這個text field是放在header
只執行header是ok的
現在每個頁面都會include header
這樣的情況就無法正確執行

wmh 發表於 2010-2-9 12:05

DOM 都載入不代表 js 都載入完成喔,可以試試看先放到 window onload 試試看[code]
$(window).load(function() {
  //放這邊
});
[/code]如果可以,表示執行 autocomplete 時,autocomplete.js 還未載入,所以再調整一下順序即可。
或放 window onload 也可以,只是可能比較慢才執行。

WILLIAMer 發表於 2010-2-9 17:53

[i=s] 本帖最後由 WILLIAMer 於 2010-2-9 18:10 編輯 [/i]

我的main page一共include header,left,footer三塊
我剛把left跟footer拿掉發現就可以了...
表示我得等所有的頁面皆載入才行

本來我只有在header加入[code]$(window.parent.document).ready(function(){
                $(document).ready(function(){
                        $("#Keyword").autocomplete("searchSuggest.action",
                  {
                          minChars: 1,
                          matchContains: false
                  }       
                  );
                });
        });[/code]以為這樣就可以確定parent已載入完畢
看來是沒顧慮到left跟footer這兩塊是否已載入完成了

好奇的是
header應該是管自己的jquery.autocomplete.js有沒有載入好就好了吧?
跟其他mainpage include的page是否載入好有關?

wmh 發表於 2010-2-9 22:10

如果你的 include 是 server 端的,那麼最後組成 client 端的頁面其實只有一個喔。

你用的是 document ready,因此只有文件本身載入完成,並非所有的檔案都載入完成喔!

WILLIAMer 發表於 2010-2-10 10:53

感謝你的幫忙
問題解決了

kelvinjones 發表於 2010-2-25 11:25

wmh 老兄,看到你這麼利害 我想請教你一下

在google.com打goo 的話會有一堆相關的東西
最後右邊有個 "關閉" 的 link
autocomplete 可以做得出來嗎?

wmh 發表於 2010-2-25 13:32

他沒有提供這樣的功能讓你直接用,如果需要這樣的功能,得找其他的,或是自己做修改囉。

kelvinjones 發表於 2010-2-25 17:47

[quote]他沒有提供這樣的功能讓你直接用,如果需要這樣的功能,得找其他的,或是自己做修改囉。 ...
[size=2][color=#999999]wmh 發表於 2010-2-25 13:32[/color] [url=http://jsgears.com/redirect.php?goto=findpost&pid=1104&ptid=114][img]http://jsgears.com/images/common/back.gif[/img][/url][/size][/quote]

魔了一天都做不了
我在function init() 中加了

                elementB = $("<DIV id='basicDiv'></DIV>");
                elementA = $("<A id='basicLink'>hihi</A>");
                elementA.appendTo(elementB);
                elementB.appendTo(element);
在 function request(term, success, failure) 中加了

                       
                                        if(parsed.length>options.max){

                                                $("#basicDiv").show();
                                        }else{
                                       
                                                $("#basicDiv").hide();
                                        }

我有三個textfield , 第一次打字autocomplete ,成功, 加了的東西出現, 但我去另二個textfield打字郤不能出現我加的東西?大大知道為什麼嗎?

kelvinjones 發表於 2010-2-26 10:05

[quote]魔了一天都做不了
我在function init() 中加了

                elementB = $("");
                elementA = $("hihi");
                elemen ...
[size=2][color=#999999]kelvinjones 發表於 2010-2-25 17:47[/color] [url=http://jsgears.com/redirect.php?goto=findpost&pid=1105&ptid=114][img]http://jsgears.com/images/common/back.gif[/img][/url][/size][/quote]

己解決, 不用id 用class

wmh 發表於 2010-2-26 10:06

我直接把你改的 code 用官方的範例測試發現都還蠻正常的喔。
你有看到什麼樣的錯誤訊息嗎?

kelvinjones 發表於 2010-2-26 17:34

[quote]我直接把你改的 code 用官方的範例測試發現都還蠻正常的喔。
你有看到什麼樣的錯誤訊息嗎? ...
[size=2][color=#999999]wmh 發表於 2010-2-26 10:06[/color] [url=http://jsgears.com/redirect.php?goto=findpost&pid=1107&ptid=114][img]http://jsgears.com/images/common/back.gif[/img][/url][/size][/quote]


我巴他改成這樣子就可以
我在function init() 中加了

                elementB = $("<DIV/>").addClass("basicDiv_jquery_autoComplete");
                elementA = $("<A>hihi</A>").addClass("basicLink_jquery_autoComplete").;
                elementA.appendTo(elementB);
                elementB.appendTo(element);

在 function request(term, success, failure) 中加了

                       
                                        if(parsed.length>options.max){
                                                $("div.basicDiv_jquery_autoComplete").show();
                                        }else{
                                                $("div.basicDiv_jquery_autoComplete").hide();
                                        }
                                       
這樣就行了, 我有三個textfield 每個都call autocomplete ,可能這樣他init 了三次, 相同id 產生了問題

但現在又發生另一個問題了, 最後一行<A>hihi</A> 給其他 selectbox 當住了....
用了  $("div.basicDiv_jquery_autoComplete").bgiframe();  , set 了 z-index 也不行, 不知怎搞的 :(

a0808008 發表於 2010-3-5 11:22

不好意思 請問一下

我去抓SQL內的資料出來比對

但是我抓出來卻不會比對 只會把全部抓出來(意思就是說 我隨便打一個東西 他就會把所有資料庫內的值秀出來)

不知道是哪邊的問題??(我抓資料的方法不夠好??)

還有 除了資料庫內全部會秀出來之外

在最後一筆資料下面還有個將近15個左右的空白

是要改jquery??


autocomplete.aspx.cs[code]        private string Conn = ConfigurationManager.AppSettings["ConnectionString"];

        protected void Page_Load(object sender, EventArgs e)
        {
            getData1();

        }
        private void getData1()
        {            
            string q = Request["q"];
            if (q == "")
            {
                return;
            }

            else
            {

                SqlCommand oCmd = new SqlCommand();
                oCmd.Connection = new SqlConnection(Conn);
                oCmd.CommandText = @"select case_name from shtc_case group by case_name";
                oCmd.CommandType = CommandType.Text;
                SqlDataAdapter oda = new SqlDataAdapter(oCmd);
                DataSet ds = new DataSet();
                oda.Fill(ds);
                string[] data = new string[ds.Tables[0].Rows.Count];

                for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
                {
                    string ss = ds.Tables[0].Rows[j]["case_name"].ToString();
                    data[j] = ss.ToString();
                }

                foreach (string x in data)
                {
                    Response.Write(x+"\n");
                }
                //string[] data = new string[] { "trhtrhr", "acvbcv", "cbvxbdfb", "adqfvbb", "otulyjfgsdg" };
            }
        }
    }[/code]

wmh 發表於 2010-3-9 08:34

[b]回復 [url=http://jsgears.com/redirect.php?goto=findpost&pid=1112&ptid=114]99#[/url] [i]a0808008[/i] [/b]

你 SQL 語法要修改,針對傳入的  Request["q"] 做資料篩選喔。

頁: 1 2 3 4 [5] 6 7

Powered by Discuz! Archiver  © 2001-2009 Comsenz Inc.