2014-01-09 52 views
1

我在我的網站上構建了一個谷歌搜索喜歡的選項,並且在搜索框中還包含了Jquery UI Autocomplete。 我也有兩個radio button和他們的Checked事件,我綁定的數據源。像谷歌自動填充無法獲取單選按鈕事件的數據

如果Company Name單選按鈕被選中我使用BindShipperName()或者如果Product Name被選中,我使用BindProductName()。這些綁定函數綁定適當的數據源。

下面是該代碼:

if (rdoCompany.Checked){ 
    listFilter = BindShippmerName(); 
} else if (rdoProduct.Checked) { 
    listFilter = BindProductName(); 
} 

當我使用自動下面的腳本完成它結合上Checked事件相應的數據,但這個我不能卓有成效地實現搜索功能。我所做的只是在數據庫搜索結果中反映出鍵入的組合。所以這是錯誤的。

function LoadList() {   
    var ds=null; 
    ds = <%=listFilter %>; 
    $("#txtConsignee").autocomplete({ 
    source: ds 
    }); 
} 

然後我說下面的腳本,使其工作,但它只能綁定一次數據在頁面加載,Product Name默認情況下,在頁面加載檢查,所以它只是結合的產品名稱。如果我點擊Company Name單選按鈕,然後也是它結合產品名稱連我都分配了該rdoCompany.CheckedlistFinder

我的更新腳本這是唯一有約束力的Product Name如下:

function LoadList(){   
    var ds=null; 
    ds = <%=listFilter %>; 
    $("#txtConsignee").autocomplete({ 
    source: function(req, responseFn) { 
     var re = $.ui.autocomplete.escapeRegex(req.term); 
     var matcher = new RegExp("^" + re, "i"); 
     var a = $.grep(ds, function(item,index){ 
     return matcher.test(item); 
     }); 
     responseFn(a); 
    } 
    }); 
} 

我在哪裏有會錯這個?

回答

1

這是一個解決方案:

C#

string names = "[" + BindShippmerName() + "," + BindProductName() + "]"; 

JS

function LoadList() 
{   
    var names = <%=listFilter %>; //names will be now a js array of 2 elements 
    var $rdoCompany = $('#<%=rdoCompany.ClientID %>'); //Get rdoCompany jquery obj 
    var index = $rdoCompany.is(":checked") ? 0 : 1; //Get selected in client side 
    var ds = names[index]:  
    //From here, it's the same 
     $("#txtConsignee").autocomplete({ 
       source: ds 
     }); 
} 

(如果上述失敗,請嘗試VAR $rdoCompany = $('#<%=rdoCompany.ClientID %>' :radio);,也許我的記憶中失敗:))

我們正在做的是讓所選的選項'生活',在JavaScript中,所以它是動態的沒有得到初始值。

你的問題是你只有初始值,所以它沒有工作,如果它被改變。

希望這會有所幫助。乾杯

+0

@Edger現在沒有什麼工作。不是我的文本框的行爲像簡單的文本框W/O自動完成。 – analyticalpicasso

+0

我的答案可能有錯誤,但是您是否瞭解我在每一行中的目的? –

+0

您的代碼中沒有錯誤,我可以找到。是的,我知道每一行都在做什麼。 – analyticalpicasso