我目前正在构建一个动态表单,使用一些HTML,PHP和jQuery。此表单包含一个下拉选择字段(带有标签名称)和两个名为tag_text_color和tag_background_color的输入框。更新jQuery脚本中的变量
当您在select字段中选择一个标签时,一点点jQuery将填充tag_text_color和tag_background_color框与当前数据库值。
在此之前,我有一个允许用户在数据库中添加标签的表单。当我在数据库中添加标签之前发生问题。
这里是添加标签的代码:
<form id="form_addtag" method="post" name="form_addtag" action="add_tag.php">
<legend>Add a tag</legend>
<input type="text" name="tag_name" id="tag_name" class="text" size="30" placeholder="Tag Name" />
<input type="text" name="tag_text_color" id="tag_text_color" class="text" size="6" placeholder="#ffffff"/>
<input type="text" name="tag_bg_color" id="tag_bg_color" class="text" size="6" placeholder="#000000" />
<button type="submit" id="button_save_tag">Add</button>
</form>
和jQuery的相应功能:
$(document).ready(function() {
$("#form_addtag").submit(function(e) {
e.preventDefault();
var url = "add_tag.php"; // the script where you handle the form input.
$.ajax({
type: "POST",
url: url,
data: $("#form_addtag").serialize(), // serializes the form's elements.
});
$('#form_addtag')[0].reset();
$("#form_edittag").load("demo.php #form_edittag")
});
添加标签工作正常,并且它完美地重新加载表单编辑的标签。然而,如果在这一块,我选择了新的标签,它是尚未得到jQuery的
HTML载入编辑标签:
<form id="form_edittag" method="post" name="form_edittag" action="edit_tag.php">
<legend>Edit a tag</legend>
<select id="select_edittag">
<?php
$tags = get_tags();
$numberOfTags = sizeof($tags);
var_dump($numberOfTags);
var_dump($tags);
foreach ($tags as $line)
{
echo("<option value='".$line["name"]."''>".$line["name"]."</option>");
}
//print("<option value='". $tags[ $j ]["name"]."'>".$tags[ $j ]["name"]."</option>");
?>
</select>
<input type="text" name="tag_text_color_edit" id="tag_text_color_edit" class="text" size="6" />
<input type="text" name="tag_bg_color_edit" id="tag_bg_color_edit" class="text" size="6" />
<button type="submit" id="button_edit_tag">Edit</button>
<button type="submit" id="button_delete_tag">Delete</button>
</form>
通讯的jQuery:
$(document).ready(function() {
$(document).on("change", "select#select_edittag", function()
{
var name = $("#select_edittag").val();
var tags = <?php echo json_encode(get_tags()); ?>;
$("#tag_text_color_edit").val(tags[name]["text_color"]);
$("#tag_bg_color_edit").val(tags[name]["background_color"]);
});
});
功能get_tags( )将返回一个包含数据库中所有标签的数组。
我在想,每次我在select“select_edittag”中选择一个新项目时,它都会运行该脚本,并使用函数get_tags()中的最新内容更新tags变量。它并不可悲。
有什么想法?如果你想有一个现场演示,我可以举办类似加载页面时
从我能读getJSON,这将意味着我必须创建一个新的,不同的页面,唯一的目标是给我的数据库中的标签?有没有其他的方式,如添加标签后使用我更新的全局变量?我并不真正喜欢第一个诚实的想法 – Shadeslayer