我目前正在进行一个项目,需要添加一些动态下拉列表。我遇到了一个问题,我添加了两个下拉列表的ajax调用,如下面的代码中所示,然后我需要在不同的文件中多次执行几乎相同的操作,因为函数并不完全相同,差异类似于下面两个ajax调用在代码上的差异。在我看来,有太多的代码是相似的,我不知道是否有一种方法可以将它们全部变成一个函数,并进行一些更改,还是应该这样做
$("#edit-account li #municipality").on('change', function(){
var mid = $(this).children(":selected").val();
var post_number = $('#zip');
var streets = $('#street');
streets.prop("disabled" , true);
post_number.val("");
$.ajax ({
type: "POST",
dataType: "json",
data : { mid: mid },
url: baseUrl + '/ajax/get-city' ,
success: function (result) {
$("#acc-city").prop("disabled", false);
var dropdown = $('#city');
var dropdown2 = $('#street');
dropdown2.empty();
dropdown.empty();
dropdown.append('<option selected="true" style="display:none;" value="">Chose City</option>');
dropdown2.append('<option selected="true" style="display:none;" value="">Choose Street</option>');
dropdown.prop('selectedIndex', 0);
dropdown2.prop('selectedIndex', 0);
$.each(result, function(number,city) {
dropdown.append(`<option data-ptt="${city.pttno}" value="${city.id_town}">${city.name}</option>`);
});
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(thrownError);
},
complete: function (result) {
var mandatory = ["first_name", "last_name", "phone", "zip","municipality","city","street" ];
checkFields(mandatory);
}
});
});
$("#edit-account li #city").on('change', function(){
var tid = $(this).children(":selected").val();
var ptt = $(this).children(":selected").data("ptt");
var post_number = $('#zip');
post_number.val(ptt);
$.ajax ({
type: "POST",
dataType: "json",
data : { tid: tid },
url: baseUrl + '/ajax/get-street' ,
success: function (result) {
var drop = $('#street');
drop.prop("disabled" , false);
drop.empty();
drop.append('<option selected="true" disabled style="display:none;" value="">Choose street</option>');
drop.prop('selectedIndex', 0);
if(result.length == 0){
drop.append('<option disabled >No Results</option>');
}
$.each(result, function(number,street) {
drop.append(`<option value="${street.id_street}">${street.street_name}</option>`);
});
var mandatory = ["first_name", "last_name", "phone", "zip","municipality","city","street" ];
checkFields(mandatory);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
},
complete: function (result) {
}
});
});
1条答案
按热度按时间mm9b1k5b1#
这是我的第一个快速剪辑。我们还可以对每个函数做更多的工作