我有一个web应用程序,用户可以在其中动态添加家喻户晓的名字,并在需要时删除这些名字。
在我看来:
<tr>
<td>Add Household</td>
</tr>
<tr>
<td>
<div class="field_wrapper">
<div>
<select name="field_name[]" value="" id="drop2" style="color:black;">
<?php
foreach ($head as $row) {
echo "<option style='color:black;' value='".$row['hh_id']."'>".$row['hh_fname']." ".$row['hh_lname']."</option>";?>
</select>
<a href="javascript:void(0);" class="add_button" title="Add field"><img src="<?php echo base_url('dist/img/add-icon.png'); ?>" /></a>
</div>
</div>
</td>
</tr>
脚本:
<script type="text/javascript">
$(document).ready(function(){
var maxField = 10; //Input fields increment limitation
var addButton = $('.add_button'); //Add button selector
var wrapper = $('.field_wrapper'); //Input field wrapper
var fieldHTML = '<div><select name="field_name[]"><option></option></select><a href="javascript:void(0);" class="remove_button" title="Remove field"><img src="<?php echo base_url("dist/img/remove-icon.png"); ?>" /></a></div>'; //New input field html
var x = 1; //Initial field counter is 1
$(addButton).click(function(){ //Once add button is clicked
if(x < maxField){ //Check maximum number of input fields
x++; //Increment field counter
$(wrapper).append(fieldHTML); // Add field html
}
});
$(wrapper).on('click', '.remove_button', function(e){ //Once remove button is clicked
e.preventDefault();
$(this).parent('div').remove(); //Remove field html
x--; //Decrement field counter
});
});
</script>
我希望每当用户单击add
按钮时,都应该像显示的第一个下拉列表一样显示相同的下拉列表。我应该如何在脚本部分实现这一点?那么如何填充fieldHtml
到下拉列表?
add
和remove
功能运行良好。只是只要有添加,就应该显示下拉列表。
非常感谢你的帮助。
有一个变通方法可以帮助您。不想重新打开下拉菜单,您可以选择多行:
<select name="field_name[]" value="" id="drop2" style="color:black;" size="10">
使用select
标记上的size
属性,您将不会有popover下拉列表,但会有一个类似下拉列表的元素始终可见。