, поэтому я пытаюсь изменить страницу учетной записи реестра по умолчанию opencart 2.x .I изменил город input
на select
с помощью jquery replaceWith, чтобы посетитель мог выбрать город из списка. После того, как посетитель выбирает город, он должен добавить список опций в район select
, чтобы посетитель мог выбрать район. но это не работает. эти коды: Myajquery select onchange - opencart 2.x зарегистрировать учетную запись
<script type="text/javascript"><!--
$('select[name=\'country_id\']').on('change', function() {
var selected_country = this.value;
$.ajax({
url: 'index.php?route=account/account/country&country_id=' + this.value,
dataType: 'json',
beforeSend: function() {
$('select[name=\'country_id\']').after(' <i class="fa fa-circle-o-notch fa-spin"></i>');
},
complete: function() {
$('.fa-spin').remove();
},
success: function (json) {
if (selected_country == 100) {
//if country indonesia is selected, we use dropdown to fetch city list (ajax)
select_html = '<select name="city_id" id="input-city" class="form-control"><option value=""><?php echo $text_select;?></option></select>';
$('input[name=\'city\']').replaceWith(select_html);
$('#kecamatan').show();
$('#desa').show();
} else {
//we don't know all of cities in the world :/
input_html = '<input type="text" name="city" value="<?php echo $city; ?>" placeholder="<?php echo $entry_city; ?>" id="input-city" class="form-control" />';
$('select[name=\'city_id\']').replaceWith(input_html);
$('#kecamatan').hide();
$('#desa').hide();
}
if (json['postcode_required'] == '1') {
$('input[name=\'postcode\']').parent().parent().addClass('required');
} else {
$('input[name=\'postcode\']').parent().parent().removeClass('required');
}
html = '<option value=""><?php echo $text_select; ?></option>';
if (json['zone']) {
for (i = 0; i < json['zone'].length; i++) {
html += '<option value="' + json['zone'][i]['zone_id'] + '"';
if (json['zone'][i]['zone_id'] == '<?php echo $zone_id; ?>') {
html += ' selected="selected"';
}
html += '>' + json['zone'][i]['name'] + '</option>';
}
} else {
html += '<option value="0" selected="selected"><?php echo $text_none; ?></option>';
}
$('select[name=\'zone_id\']').html(html);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
$('select[name=\'country_id\']').trigger('change');
//--></script>
<script type="text/javascript">
$('select[name=\'zone_id\']').on('change', function() {
$.ajax({
url: 'index.php?route=localisation/indonesia/kabupaten&oc_zone_id=' + this.value,
dataType: 'json',
beforeSend: function() {
$('select[name=\'zone_id\']').after(' <i class="fa fa-circle-o-notch fa-spin"></i>');
},
complete: function() {
$('.fa-spin').remove();
},
success: function (json) {
if (json['postcode_required'] == '1') {
$('input[name=\'postcode\']').parent().parent().addClass('required');
} else {
$('input[name=\'postcode\']').parent().parent().removeClass('required');
}
html = '<option value=""><?php echo $text_select; ?></option>';
if (json['kabupaten']) {
for (i = 0; i < json['kabupaten'].length; i++) {
html += '<option value="' + json['kabupaten'][i]['id'] + '"';
if (json['kabupaten'][i]['id'] == '<?php echo $city; ?>') {
html += ' selected="selected"';
}
html += '>' + json['kabupaten'][i]['nama'] + '</option>';
}
}
$('select[name=\'city_id\']').html(html);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
$('select[name=\'zone_id\']').trigger('change');
</script>
<script type="text/javascript">
$('select[name=\'city_id\']').on('change', function() {
$.ajax({
url: 'index.php?route=localisation/indonesia/kecamatan&id_kabupaten=' + this.value,
dataType: 'json',
beforeSend: function() {
$('select[name=\'city_id\']').after(' <i class="fa fa-circle-o-notch fa-spin"></i>');
},
complete: function() {
$('.fa-spin').remove();
},
success: function (json) {
if (json['postcode_required'] == '1') {
$('input[name=\'postcode\']').parent().parent().addClass('required');
} else {
$('input[name=\'postcode\']').parent().parent().removeClass('required');
}
html = '<option value=""><?php echo $text_select; ?></option>';
if (json['kecamatan']) {
for (i = 0; i < json['kecamatan'].length; i++) {
html += '<option value="' + json['kecamatan'][i]['id'] + '"';
if (json['kecamatan'][i]['id'] == '<?php echo $city; ?>') {
html += ' selected="selected"';
}
html += '>' + json['kecamatan'][i]['nama'] + '</option>';
}
}
$('select[name=\'kecamatan_id\']').html(html);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
});
$('select[name=\'city_id\']').trigger('change');
</script>
Я пытался создать простой скрипт здесь https://jsfiddle.net/oo42kq9z/ и работы. Я думаю, что это похоже, но почему на учетной записи регистрации не удалось вызвать страницу $('select[name=\'city_id\']').trigger('change')
?
, который работает, спасибо. '$ ('select [name = \' country_id \ ']')' и '$ ('select [name = \' zone_id \ ']')' работает, почему '$ ('select [name = \' city_id \ ']') 'не работает? любое объяснение? –
Скорее всего потому, что 'id = 'city_id'' не задано' city_id'. Можете ли вы это подтвердить? –
'// Если выбрана страна, замените ввод с выпадающим списком для списка городов (ajax) select_html = ' '; $ ('input [name = \' city \ ']'). ReplaceWith (select_html); 'поэтому я использую' $ (document) .on ('change', '# input-city', function() {}); ' –