2014-11-25 133 views
2

新建L1標籤,我想創建新<li>元素,它應該通過自動使用jQuery該項目添加到現有的自舉下拉菜單(<ul>)。新創建的項目也應該在下拉菜單中自動選擇。jQuery的現有引導下拉菜單

有人可以幫我嗎?

提前致謝!

HTML:

<div class="btn-group"> 
    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false"> 
    Select Items <span class="caret"></span> 
    </button> 
    <ul class="dropdown-menu reddy" role="menu"> 
     <li><input type="text" class="form-control"><button type="button" class="btn btn-primary btn-xs">Create New</button></li> 
     <li><a href="#"><label for="menuitem1"><input type="checkbox" id="menuitem1" /> Menu Item 1</label></a></li> 
     <li><a href="#"><label for="menuitem2"><input type="checkbox" id="menuitem2" /> Menu Item 2</label></a></li> 
     <li><a href="#"><label for="menuitem3"><input type="checkbox" id="menuitem3" /> Menu Item 3</label></a></li> 
    </ul> 
</div> 

CSS:

.form-control{max-width:140px;float:left;margin-right:5px;margin-left:10px;} 
.btn{margin-top:5px;} 
.open>.dropdown-menu{width:250px;} 

請參考 「Fiddle」 這裏

+0

這是很好的做法,正式接受了答案,充分解決你的問題。 – StockB 2015-10-19 15:19:11

回答

2

您可以使用append()方法添加HTML。爲「自動」選擇新的菜單項一個新的複選框,只需設置checked屬性「檢查」

$("#createnew").on("click", function() {  
    var $dropdown = $(".dropdown-menu.reddy"); 
    var menuItemNo = $dropdown.find("li").length; 
    var menuItemId = "menuitem" + menuItemNo;  

    $dropdown.append("<li><a href='#'><label for='" + menuItemId + "'><input type='checkbox' id='" + menuItemId + "' checked='checked' /> Menu Item " + menuItemNo +"</label></a></li>"); 
}); 

看到一個更新的例子在這裏:http://jsfiddle.net/br98nxj9/1/

+0

真的很抱歉@Chris,但我需要顯示新創建的值(「來自textfield」)而不是菜單項的藉口...我不是jQuery專家,如果你能幫助我,我會更快樂......謝謝你提前! – Prasad 2014-11-25 11:48:43

+0

@Prasad - 你可以通過使用'val()'從文本框的jQuery對象中提取值來實現。我已經更新了這裏的小提琴:http://jsfiddle.net/br98nxj9/2/ – 2014-11-25 12:05:43

+0

這現在變得更好了:)...要擴展,我如何添加驗證,如果輸入爲空,然後菜單不應創建項目,只需將.error類添加到文本字段。一旦菜單項被創建,輸入值應該被自動模糊,並且重複值也不應該被允許......我知道我要求太多,但這是要求。請你? – Prasad 2014-11-25 12:14:43

0

剛剛更新這個 '小' 的預覽。檢查這個小提琴http://jsfiddle.net/pamxnouh/

這是使用的JavaScript。確保給你的創建按鈕一個'新的'ID。

$('#new-li').on('click', function(event){ 
    event.stopPropagation(); 
    var x = $(event.target).closest('ul').find("a").size()+1; 
    $(event.target).closest('ul').append("<li><a href='#'><label for='menuitem"+x+"'><input type='checkbox' id='menuitem"+x+"' />"+$(event.target).siblings('input').first().val()+"</label></a></li>"); 
    $(event.target).closest('ul').find('input').each(function(){ 
     $(this).prop('checked', false); 
    }); 
    $(event.target).closest('ul').find('input').last().prop('checked', true); 
}); 
+0

嗨尼爾斯...感謝您的快速回復。很抱歉,這段代碼無效。由於我對代碼非常陌生,我無法找到問題的具體位置。 請檢查[** Fiddle **](http://jsfiddle.net/ReddyPrasad/s9Lkdpev/1/) – Prasad 2014-11-25 11:22:46

+0

您好尼爾斯, 再次感謝您的快速回復 這就像一個冠軍...我已經檢查了兩次:) 保持Greate的工作! – Prasad 2014-11-25 11:53:07

+0

剛剛根據我之前錯過的小提琴更新了這個。 – 2014-11-25 11:53:33