2011-07-20 69 views
0

這是我第一次嘗試鏈接使用Ajax和Web表單的選擇框,我很明顯缺少一些東西。我完全不知所措。這是我的問題:選擇框動態填充AJAX不張貼在表單提交

用戶從一個選擇框中選擇一個國家,並提出ajax請求,選項(包含國家和地區的名稱)返回到下面的選擇框。 將選項返回到表單選擇字段時,用戶選擇的選項不會在提交表單時發送。

這裏是我編造的代碼:

<script type="text/javascript"> 
    jQuery(document).ready(function($){ 
     $("select#state").attr("disabled","disabled"); 
     $("select#country").change(function(){ 
     $("select#state").attr("disabled","disabled"); 
     $("select#state").html("<option>Loading States...</option>"); 
     var id = $("select#country option:selected").attr('value'); 
      $.post("http://example.com/terms.php", {id:id}, function(data){ 
      $("select#state").removeAttr("disabled"); 
      $("select#state").html(data); 
      }); 
     }); 
    }); 
</script> 

你可以在這裏看到活生生的例子(見國家/州部分):

http://shredtopia.com/add/

任何想法需要這個工作嗎?

回答

0

據我可以看到,用戶輸入被髮送

input_32 79 
input_29 alberta 

作爲79全國加拿大阿爾伯塔的狀態。

<select tabindex="11" class="medium gfield_select" id="input_1_32" name="input_32"></select> 
<select tabindex="12" class="medium gfield_select" id="input_1_29" name="input_29" disabled=""></select> 

也許我誤解了這個問題?

+0

表單不提交州'#input_1_29'。它提交的國家'#input_1_32'(沒有填充AJAX),但不是國家。 –

+0

檢查選擇的**名稱**,**名稱**是** input_32 **和** input_29 **,而不是** input_1_29 **和** input_1_32 **,可能是這個問題。 – Josejulio

+0

不是,使用了字段ID,而不是名稱。 –

0

嘗試.live(EVENTTYPE,處理程序)

描述:附加的處理程序到事件爲當前選擇器現在和將來匹配其中,所有的元素。

http://api.jquery.com/live/

添加到您的代碼,試試吧〜

$('select#state').live('change', function() { 
    var id = $("select#state option:selected").attr('value'); 
    alert(id); 
}); 

或者試試這樣:

添加一個隱藏在形式:

<input type="hidden" id="hiddenValue"> 

改變你的選擇#狀態是這樣的:

<select onchange='innerValue(this.options[this.options.selectedIndex].value)'></select> 

,並創建一個javascript函數

function innerValue(value){ 
     $("#hiddenValue").val(value) 
    } 

然後,單擊提交按鈕,0​​是你需要

$("#submitbutton").click(function(){ 
      alert($("#hiddenValue").val()) 
     }) 

,但是,我覺得這是不是最好的解決方案...

+0

改變單詞:「country」=>「state 「 – Monday

+0

我試過.live()處理程序,但它不起作用。 –