我这里有一张表格 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加载后提交时,它没有获得郊区的价值。 请检查以上网址,解决方案对我有帮助。
答案 0 :(得分:0)
您的控制台对this
说了些什么?我认为问题可能是$(this)
内$.post
引用window
对象,不引发#zip
。还有其他几点说明:
#zip
具有的任何值,这是一个input
元素,指的是邮政编码(不到郊区) 由于select
将动态加载,旧处理程序不再适用。但是,您可以委托,如下:
$(document).on('blur','#suburb',function() {
//do whatever
});
就this
的上下文问题而言,我相信在$.post
的上下文中会调用window
个回调。试试这个也可以解决这个问题:
$("#zip").on('blur',function(){
var self = this;
$.post("get_suburb_admin1.php",{zip:$(self).val()}, function(d){
$("#suburb_cnt").html(d);
});
});
总的来说,您的代码可能存在几个潜在问题,以及您要执行的操作。我建议您搜索有关AJAX,JavaScript函数上下文和jQuery选择器的更多信息。
旁注:你可能想重新考虑如何用你的php加载select
,除非你有充分的理由承诺。自己测试网页,有时需要差不多10秒才能从您的AJAX调用中加载select
。
答案 1 :(得分:0)
在表格前打开表格,然后在表格后将其关闭。
<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>