2014-01-28 33 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