2014-01-28 45 views
0

我目前正在構建一個動態表單,使用一些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變量。它並不可悲。

有什麼想法?如果你想有一個現場演示,我可以舉辦類似加載頁面時

回答

0

PHP運行一次。您必須通過ajax重新填充「標籤」。檢查:getJSON

+0

從我能讀getJSON,這將意味着我必須創建一個新的,不同的頁面,唯一的目標是給我的數據庫中的標籤?有沒有其他的方式,如添加標籤後使用我更新的全局變量?我並不真正喜歡第一個誠實的想法 – Shadeslayer