2012-07-24 171 views
0

我遇到了問題jQueryAJAX。 我有3個選擇標籤,其值通過AJAX填充。jQuery/AJAX自動填充值

這是我需要的情況。

當我在第一個選擇標籤上選擇選項時,我在第二個選擇標籤中獲得特定值。 然後,當我在第二個標籤上選擇選項時,我在第三個選擇標籤中獲得特定值。 在第三個選擇標籤中選擇選項後 - 發生提交。 這部分工作。

當然在提交一切後重置。我不希望這樣,所以我把選擇標籤放入選擇標籤中。現在我不知道如何「直播」從第一個和第二個選擇標籤讀取,以便在提交選項保持填充。

這裏是我的代碼PHP/HTML代碼

<form action="<?php echo $PHP_SELF; ?>" method="POST" name="userVideos" id="userVideos" style="width: 580px; margin-left: 5px; margin-bottom: 2px;"> 
     <select name="brand_select" id="brand_select" style="width: 140px; margin-right: 20px;"> 
      <option value="">Select Brand</option> 

      <?php 
      $query_brands = mysql_query("SELECT DISTINCT brand FROM users_video WHERE location = '2' ORDER BY brand"); 
      while ($row = mysql_fetch_object($query_brands)) 
      { 
       $name = $row->brand; 
       $sel = ($_POST['brand_name'] == $name) ? "selected='selected'" : ""; 
       echo "<option value='{$row->brand}' $sel>{$row->brand}</option>"; 
      } 
      ?> 

     </select> 
     <input type="hidden" value="<?php echo htmlspecialchars($_POST['brand_select']); ?>" name="brand_name" id="brand_name"/> 

     <select name="series_select" id="series_select" style="width: 140px; margin-right: 20px;" disabled> 
      <option value="">Select Series</option> 

      <?php 
      //TODO: finish code tidification 
      $sel = ($_POST['series_name'] != "") ? "selected='selected'" : ""; 
      echo "<option value='" . htmlspecialchars($_POST['series_name']) . "' $sel>" . htmlspecialchars($_POST['series_name']) . "</option>"; 
      ?> 

     </select> 
     <input type="hidden" value="" name="series_name" id="series_name"/> 

     <select name="model_select" id="model_select" style="width: 140px; margin-right: 20px;" disabled> 
      <option value="">Select Model</option> 

      <?php 
      $sel = ($_POST['model_name'] != "") ? "selected='selected'" : ""; 
      echo "<option value='" . htmlspecialchars($_POST['model_name'] != "") . "' $sel>" . htmlspecialchars($_POST['model_name']) . "</option>"; 
      ?> 

     </select> 
     <input type="hidden" value="" name="model_name" id="model_name"/> 
    </form> 

這裏是我的jQuery 代碼

jQuery(document).ready(function(){ 

var brand = ""; 
var series = ""; 
var model = ""; 
var _brand = ""; 
_brand = $('#brand_name').val(); 

$("#brand_select").live("change", function(){ 
    brand = $('select#brand_select').val(); 


    if (brand == "" && _brand == "") 
    { 
     $('select#series_select').attr('disabled','disabled'); 
     $('#model_select').attr('disabled','disabled'); 
    } 
    else 
    { 
     $('select#series_select').removeAttr('disabled'); 
     $('#brand_name').val(brand); 

     var grbData = $.ajax({ 
      type: "GET", 
      url: "series.php", 
      data: "brand=" + brand, 
      success: function(html){ 
       $("#series_select").html(html); 
      } 
     }); 
    } 
}); 

$("#series_select").change(function(){ 
    series = $('select#series_select').val(); 
    if (series != ""){ 
     $('#model_select').removeAttr('disabled'); 
     $('#series_name').val(series); 

     var newData = $.ajax({ 
      type: "GET", 
      url: "model.php", 
      data: "brand=" + brand + "&series=" + series, 
      success: function(html){ 
       $("#model_select").html(html); 
      } 
     }); 
    }else{ 
     $('#model_select').attr('disabled','disabled'); 
    } 
}); 

$("#model_select").change(function(){ 
    model = $('select#model_select').val(); 
    if (model != ""){ 
     $('#model_name').val(model); 
     $('#userVideos').submit(); 
    } 
}); 
+0

讓後備人員填入值。當支持人員知道所選內容時,無需讓客戶填寫它們 – epascarello 2012-07-24 23:58:35

+0

您可以詳細說明一下或給我舉一些例子嗎?謝謝。 – dergotic 2012-07-25 00:00:05

+0

太雜亂,太多不相關的代碼。請儘量清理你的代碼,以便說明你想要的東西。這有助於他人分析問題(而不是花費大量時間來了解不相關的事情)並回答實際問題。哎呀,通過解決問題,你甚至可以自己找到解決方案(自己有一個洞察力)。 – Styxxy 2012-07-25 00:01:50

回答

0

嘗試像這樣爲了簡單。給他們所有同一班,但使用ID爲品牌或系列。我在寫這篇文章時沒有測試對不起,但是你可以把你所有的功能都移到1.你需要調整的基本想法。另外,我甚至可能用靜態變量將它複雜化。但至少你可以跟蹤價值。

$(".series_select").change(function(){ 
var value = $(this).val(), 
    type = $(this).attr('id'), 
    data, 
    self = $(this); 
    if(type == "brand"){ 
    data = "brand=" + value; 
    $(".series_select").change.brand = value; 
    } else if (type == "series"){ 
    data = "brand=" + $(".series_select").change.brand + "&series=" + value; 
    $(".series_select").change.series = value; 
    } else if(type == "submit"){ 
     if($(".series_select").change.brand != '' && $(".series_select").change.series != ''){ 
     $('#userVideos').submit(); 
     return; 
     } 
} 

    $.ajax({ 
     type: "GET", 
     url: "model.php", 
     data: data, 
     success: function(html){ 
      self.html(html); 
     } 
     }); 
    }); 
+0

我已經設法解決這個問題。 – dergotic 2012-07-25 23:09:16

+0

Thx每個人的答案和好點子讓我走向正確的道路! – dergotic 2012-07-25 23:09:53