2012-02-23 54 views
0

對於每個用戶,有幾個引用。每個參考可能具有不同的屬性。所以我希望用戶先選擇引用屬性,然後爲該屬性輸入字段變得可見。如果用戶有多個引用,他可以通過簡單地點擊添加按鈕添加一個新的引用,並出現一個新的選擇,依此類推。jquery添加新的divs,在選擇菜單後顯示輸入字段

我試圖用javascript來做,但有一些小問題。我發現處理選擇一個相當簡單的jQuery解決方案:

HTML

<form> 
    <select id="sel"> 
     <option value="">- select -</option> 
     <option value="option1">Option 1</option> 
     <option value="option2">Option 2</option>   
    </select> 
    <input type="text" class="option1" /><span>Textbox label 1</span> 
    <input type="text" class="option2" /><span>Textbox label 2</span> 
    <input type="text" class="option2" /><span>Textbox label 2</span> 
    <input type="text" class="option2" /><span>Textbox label 2</span> 
</form> 

jQuery的

$(function() { 
    $('#sel').change(function() { 
     $("input").hide().filter("." + $(this).find("option:selected").val()).show(); 
    }); 
    $("input").focus(function() { 
     $(this).next("span").fadeIn(1000); 
    }).blur(function() { 
     $(this).next("span").fadeOut(1000); 
    }); 
}); 

CSS

input { 
    display:none; 
} 
span { 
    display:none; 
} 

,然後添加新的div ..

var inival=1; 
function addNew(){ 
    var newArea = add_New_Element(); 
    var htcontents = "<select id="sel">"+ 
     "<option value="">- select -</option>"+ 
     "<option value="option1">Option 1</option>"+ 
     "<option value="option2">Option 2</option>" +   
    "</select>"+ 
    "<input type="text" class="option1" /><span>Textbox label 1</span>"+ 
    "<input type="text" class="option2" /><span>Textbox label 2</span>"+ 
    "<input type="text" class="option2" /><span>Textbox label 2</span>"+ 
    "<input type="text" class="option2" /><span>Textbox label 2</span>"; 
    document.getElementById(newArea).innerHTML = htcontents;    
} 

function add_New_Element() { 
    inival=inival+1; 
    var ni = document.getElementById('area'); 
    var newdiv = document.createElement('div'); 
    var divIdName = 'Div #'+ inival; 
    newdiv.setAttribute('id',divIdName); 
    ni.appendChild(newdiv); 
    return divIdName; 
} 

function addNew(); 

但是你可能會看到,這是一個非常長的解決方案。我想有更高效和更短的解決方案。任何幫助深表感謝。

+0

爲什麼你手動創建,當你聲稱要使用jQuery附加元素? – Sorpigal 2012-02-23 14:47:16

+1

在多行代碼中,使用雙引號作爲html的一部分,其中字符串用雙引號引起來。 '' Mikhail 2012-02-23 14:49:57

+0

嗨Sorpigal,這是因爲我不知道jQuery。 – teutara 2012-02-23 14:51:19

回答

相關問題