在ajax加载</select>之后,表单<select>值不提交

时间:2014-01-11 20:40:30

标签: php jquery html

我这里有一张表格 http://excavator.net.au/test1.php  在模糊了邮政编码之后,郊区正在加载带有一些选项的下拉列表

这是jquery代码

$(document).ready(function(){
    $("#zip").on('blur',function(){
        $.post("get_suburb_admin1.php",{zip:$(this).val()}, function(d){
            $("#suburb_cnt").html(d);
        });
    });

});

但是当在ajax加载之前提交表单时它会变得很好。 但是当它在ajax加载后提交时,它没有获得郊区的价值。 请检查以上网址,解决方案对我有帮助。

4 个答案:

答案 0 :(得分:0)

您的控制台对this说了些什么?我认为问题可能是$(this)$.post引用window对象,引发#zip。还有其他几点说明:

  1. 您尝试执行的操作是发送#zip具有的任何值,这是一个input元素,指的是邮政编码(到郊区)
  2. 由于select将动态加载,旧处理程序不再适用。但是,您可以委托,如下:

    $(document).on('blur','#suburb',function() {
        //do whatever
    });   
    
  3. this的上下文问题而言,我相信在$.post的上下文中会调用window个回调。试试这个也可以解决这个问题:

    $("#zip").on('blur',function(){
        var self = this;
        $.post("get_suburb_admin1.php",{zip:$(self).val()}, function(d){
            $("#suburb_cnt").html(d);
        });
    });
    
  4. 总的来说,您的代码可能存在几个潜在问题,以及您要执行的操作。我建议您搜索有关AJAX,JavaScript函数上下文和jQuery选择器的更多信息。

    旁注:你可能想重新考虑如何用你的php加载select,除非你有充分的理由承诺。自己测试网页,有时需要差不多10秒才能从您的AJAX调用中加载select

答案 1 :(得分:0)

在表格前打开表格,然后在表格后将其关闭。

First lookSecond look

<form action=""...>
    <table>
        <tr>
            ...
        </tr>
    </table>
</form>

答案 2 :(得分:0)

现在我在firebug(标签NET)中看到了通过提交发送的数据。

首先 input[name=suburb1] - 好的。 POST所有需要的字段。

第二次 onBlur您将input[name=suburb1]替换为select[name=suburb1]Ajax)。你可以看到这一点 选择存在于DOM中(参见控制台)。但它不通过POST发送(其他字段 - 确定)。 我不知道为什么会这样(谷歌沉默)。

我找到了一个解决方案:

$("#frm input[type=submit]").submit(function(){
   // get value from "dynamic-ajax" select 
   var suburb = $("select[name=suburb1]").val();

   // adding hidden with same name & value 
   $('<input>').attr({
      type: 'hidden',
      name: 'suburb1',
      value: suburb,
   }).appendTo("#frm");
});

答案 3 :(得分:0)

在你的AJAX调用之后,这就是你的HTML看起来的样子。

表格在开幕后已经重新填写并关闭。因此,当您提交时,没有输入通过。

<body>
<form name="frm" id="frm" action="test1.php" method="post" 
      enctype="multipart/form-data"></form>
<tbody><tr>
            <td>Address :</td>
            <td><input name="address" value="" type="text"></td>
        </tr>

        <tr>
            <td>Suburb :</td>
            <td id="suburb_cnt"><select id="suburb" name="suburb1">
    <option value="ALEXANDRIA">ALEXANDRIA, New South Wales</option>
    <option value="BEACONSFIELD">BEACONSFIELD, New South Wales</option>
    <option value="EVELEIGH">EVELEIGH, New South Wales</option>
    </select></td>
        </tr>

        <tr>
            <td>Postcode :</td>
            <td><input name="zip" id="zip" value="" type="text"></td>
        </tr>

        <tr>
            <td>State :</td>
            <td id="state_cnt"><input name="state" id="state" value="" type="text"></td>
        </tr>
        <tr>
            <td></td>
            <td><input value="submit" name="submit" type="submit"></td>
        </tr>