2010-10-22 65 views
0

自動完成輸入使生活更輕鬆。但是,我正在開發一個項目,客戶堅持要有普通輸入(單選按鈕,複選框組和下拉選擇)。我不想更改服務器端代碼,並打算編寫一個JavaScript函數來在客戶端創建這些表單元素。我認爲最好的方法是給一個普通的文本框輸入一個類,並將其轉換爲最終的輸入類型。但我不想重新發明輪子,所以我想我會檢查一下是否已經完成。谷歌沒有帶來預期的結果,所以我轉向SO,你見過這樣的功能/插件嗎?有沒有ajax`select`?

+1

如何你的問題的標題和正文相關? – 2010-10-22 16:34:15

+0

@ŠimeVidas - 如果有這樣的事情,它會用ajax供電,很可能被稱爲'ajax select' – 2010-10-22 16:38:52

+0

@Majid在SELECT元素(下拉列表)中選擇?據我所知,你想要提供一個包含INPUT文本框的HTML頁面,然後你想用JavaScript來替換那些帶有其他類型表單元素的文本框,對嗎? Ajax在哪裏發揮作用? – 2010-10-22 16:44:35

回答

0

現在有一個;)這裏是slightly modified jsfidle(因爲我們不想從真實服務器拉數據)。在實際應用中的代碼會是這樣的:

標記

Please choose the product:<br/> 
<!-- not all products; only what we have on stock --> 
<input type="text" id="product"> 

JS

$(document).ready(function() { 

    $.getScript('available_products.php', function() { 

    // we assume the server would return an array like this: 
    // var products = ['33712:Product A', '12501:Product B', '14619:Product C']; 

    var myoptions = ''; 
    $.each(
    products, function(n, p) { 
     var pp = p.split(':'); 
     var i = pp[0]; 
     var v = pp[1]; 
     myoptions += '<option value="' + i + '">' + v + '</option>'; 
    }); 

    $('#product').replaceWith('<select id="product">' + myoptions + '</select>'); 

    }); 

}); 
0

如果我正確理解你的問題,你想爲一個表格輸入大量的文本,然後在客戶端將其轉換爲其他形式的輸入(複選框等)?不知道我是否真的理解這種動機(我認爲只需提供符合客戶需求的表單會更容易),但您應該可以使用replaceWith或相關功能來完成此操作。

雖然您的描述看起來好像有些東西缺失 - 您需要編輯服務器端以便在每個輸入上放置一個類,爲什麼不直接改變類型呢?

+0

我想我最終會寫這個函數。你的理解是正確的,動機是保持簡單。假設你有一些需要獲取用戶標識的表單,使用'user-id'類更容易獲得一個文本框,並且有一個腳本查詢users表並返回user-id和將名稱顯示爲json數據。沒有這個,你將不得不爲每個表單解析一個選擇。 – 2010-10-22 17:01:02