我目前正在構建一個動態表單,使用一些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