我将代码解压缩到一个名为load_shipping_estimates
的函数中:
$(function() {
function load_shipping_estimates() {
var zip_code = $('#shipping_estimator_text_field').val();
if (/^\d+$/.test(zip_code) && zip_code.length == 5) {
jQuery.ajax({
url: '/checkout/estimate_shipping',
type: 'GET',
beforeSend: function () { $('.ajax_loader').show(); },
complete: function () { $('.ajax_loader').hide(); },
data: {"zip_code": zip_code},
dataType: 'script'
});
return false;
} else {
$('#estimator_error_message').html('Please enter a 5 digit zip code.');
return false;
}
}
// it should only happen when I click on #estimate_shipping_link
$('.ajax_loader').hide();
$('#estimate_shipping_link').on("click", load_shipping_estimates());
});
一旦页面加载,它就会继续加载。从最后几行可以看出,我只想在用户点击链接时加载它。我该如何解决?我需要将它提取到函数中,因为我将在文件的其他地方重用它。
答案 0 :(得分:1)
您在启动时使用load_shipping_estimates()
调用您的函数。
$('#estimate_shipping_link').on("click", load_shipping_estimates);
应该做的伎俩:)
答案 1 :(得分:0)
整个命名函数包含在$(function() { });
中,这使得它在页面加载时自行运行
删除第一行和最后一行,你应该是好的