假设我有一个设置页面,其中包含有关某人的不同信息。在该页面中,它包含一个爱好部分。这个人可以增加他想要的爱好。应该有一个添加按钮来为兴趣爱好添加更多字段。
使用jquery动态添加更多字段是一项简单的任务。但我想要的是,当用户动态添加字段时,那个字段应该保存到数据库中,我的意思是说,通常,当我们使用jquery创建字段时,它会在页面刷新时消失。但我想列出这些信息。 (在该领域内)。如何保存动态创建的输入类型?
我做了很多研究,我还没有收到一个单一的帮助。我期待Stackoverflow团队肯定会有所帮助。我添加动态字段的代码如下:
<div class="items">
<div class="form-group"><label>Author Email:</label>
<input id="author_email" class="form-control" name="author" required="required" type="EMAIL" />
</div>
</div>
<button type="button" class="add_field_button">Add Field</button>
Jquery代码如下:
$(document).ready(function() {
var max_fields = 20; //maximum input boxes allowed
var wrapper = $("#items"); //Fields wrapper
var add_button = $(".add_field_button"); //Add button ID
var x = 1; //initlal text box count
$(add_button).click(function(e){ //on add input button click
e.preventDefault();
if(x < max_fields){ //max input box allowed
x++; //text box increment
$(wrapper).append('
<div class="form-group"><label for="title">Author Email:</label>' +
'<input class="form-control col-md-11" id="author_email" type="email" placeholder=""name="author"/>' +
'<a href="#" class="remove_field"><i class="fa fa-times"></a>
</div>
'); //add input box
}
});
$(wrapper).on("click",".remove_field", function(e){ //user click on remove field
e.preventDefault(); $(this).parent('div').remove(); x--;
})
});
我想再次确认我的问题,我希望在页面刷新时看到文本字段中的爱好。这也是我想保存输入类型。我能做些什么呢?我应该将<input type="text" name="hobby[]">
添加到数据库还是比这更好的东西?
答案 0 :(得分:0)
您的用户不会从数据库角度添加字段,因此您必须为其提供支持它的数据结构。
这是一个这样的结构的例子。有一百万种方法可以做到。
表 - USER_DATA_TYPES
表 - USER_FIELD_TYPES - 用户添加的字段类型
表 - USER_FIELD_DATA - 用户的实际数据。如果ISMULTI = 0,那么最多只有一条USER_ID / FIELD_ID组合的记录。
有几点想法,您可以将USER_FIELD_DATA放入3个单独的表中(一个用于数字,一个用于字符串,一个用于日期),或者将其保存在一个表中。各方面都有利弊。显然,单个表的专业人员结构简单,但是对数据进行过滤/排序,数字/日期需要事先进行投射,并且还需要更多空间来存储数据。
另一种想法是,您可能希望添加列来跟踪上次更改日期,最后将用户更改为数据,以及您可以尝试的许多其他可能的事情。