2012-02-23 58 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

回答

相关问题