jQuery .on( "keyup" ) 仅在 ajax 调用后触发一次,如果值更改则不会更新,使用它使用邮政编码更新城市和州



这是我的jquery与ajax调用

$(".zipfield").on("keyup", function(){
var city = $(this).closest(".addressBlock").find(".cityfield");
var state = $(this).closest(".addressBlock").find(".statefield");
if ($(this).val() !== "" && (city.val() === "" || city.val() == null) && (state.val() === "" || state.val() == null) ) {
$.ajax({
method: "POST",
url: "<?= $this->baseUrl();?>/search/zip",
data: {zip: $(this).val()},
complete: function (r, e) {
var data = JSON.parse(r.responseText);
if (data.status === "OK") {
city.val(data.city);
state.val(data.state);
}
}
});
}
});

关于如何在每次为zipfield输入新值时更新它的任何建议

似乎在

var city = $(this).closest(".addressBlock").find(".cityfield");
var state = $(this).closest(".addressBlock").find(".statefield");

使用$(this).closest(".className")实际上并没有获得元素,因此,在ajax调用之后没有设置它们。

我不相信你可以在jquery的closest中使用类名。你应该找到最接近的tr或者form。从那里,您可以使用find与类名cityfieldstatefield

最新更新