使用AJAX动态填充的选择框不会在表单提交上发布

时间:2011-07-20 01:35:24

标签: ajax forms jquery

这是我第一次尝试使用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/

有什么想法让这个有用吗?

2 个答案:

答案 0 :(得分:0)

据我所知,用户输入已发送

input_32    79
input_29    alberta

成为国家加拿大 alberta 州。

<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>

也许我误解了这个问题?

答案 1 :(得分:0)

尝试.live(eventType,handler)

说明:为现在和将来与当前选择器匹配的所有元素附加事件处理程序。

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)
     }

然后,点击提交按钮,您需要$("#hiddenValue").val()

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

但是,我认为这不是最好的解决方案......