2010-10-06 124 views
1

我想實現文本框的自動完成方法。如何將值傳遞給JavaScript數組?

我想使用基於jquerys自動完成的例子提供here

<head> 
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 

    <script> 
    $(document).ready(function() { 
    $("input#autocomplete").autocomplete({ 
    source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"] 
}); 
    }); 
    </script> 
</head> 

第一,主要的問題是,我不知道通過我的值在source:

因你們說的方法我的意思是,假設我有一個服務器端ASP.NET函數 GetTheResults as listof(string)or GetTheResults as string()

無法通過這些值作爲自動完成所需的源?

第二個問題是具體的方式不使用AJAX。 這意味着我猜的形式的負載我將加載到源的所有可用值。這不是一個矯枉過正的問題嗎?

你有什麼建議呢?

感謝和問候!

+0

考慮http://view.jquery.com/trunk/plugins/autocomplete/demo/它允許AJAX加載值。 – Gazler 2010-10-06 17:54:30

回答

0

哦,也許我誤解了 - 是GetTheResults服務器端的ASP.NET函數?你沒有說。這假設它是一個客戶端JavaScript函數。如果是服務器端,爲什麼不實現AJAX方式?


如果GetTheResults返回所有值,那麼我認爲你可以只需填寫它內聯,即

$("input#autocomplete").autocomplete({ 
    source: GetTheResults() 
    } 
}); 

控制然後將過濾列表中顯示。或者您可以使用該頁面上記錄的功能源機制,例如

$("input#autocomplete").autocomplete({ 
    source: function(request, response) { 
     var results = GetTheResultsForInput(request.term); 
     response(results); 
    } 
}); 
+0

Yeap! GetTheResults是一個服務器端的ASP函數。對不起,沒有提到。 – OrElse 2010-10-06 18:06:49

0

您可以改爲手動將服務器上的內容寫出到客戶端。嘗試創建一個名爲公有方法:

public string GetJs() 
{ 
    var data = this.GetTheResults(); 
    string output = "["; 
    bool comma = false; 

    foreach (var i in data) 
    { 
     if (comma) 
     output += ", "; 
     else 
     comma = true; 

     output += '" + i + "'"; 
    } 

    return output + "]"; 
} 

,改變你的客戶端腳本的樣子:

$(document).ready(function() { 
    $("input#autocomplete").autocomplete({ 
    source: <%= GetJs() %> 
}); 
    }); 

您可能必須注入<%=%>爲一個字符串,而是做:

source: eval("<%= GetJs() %>") 

或者你可以寫整個JS從頁面到輸出。

HTH。