2016-03-15 2 views
0

, поэтому я пытаюсь изменить страницу учетной записи реестра по умолчанию 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')?

ответ

0

Предполагая, что ваш select city_id has the id of 'city_id' Вы должны будете использовать $(document).on("change")

$(document).on("change", "#city_id", function(){ 
/* Code Goes Here */ 
} 
+0

, который работает, спасибо. '$ ('select [name = \' country_id \ ']')' и '$ ('select [name = \' zone_id \ ']')' работает, почему '$ ('select [name = \' city_id \ ']') 'не работает? любое объяснение? –

+0

Скорее всего потому, что 'id = 'city_id'' не задано' city_id'. Можете ли вы это подтвердить? –

+0

'// Если выбрана страна, замените ввод с выпадающим списком для списка городов (ajax) select_html = ' '; $ ('input [name = \' city \ ']'). ReplaceWith (select_html); 'поэтому я использую' $ (document) .on ('change', '# input-city', function() {}); ' –

 Смежные вопросы

  • Нет связанных вопросов^_^