2012-03-22 4 views
1

здесь моя ситуация. У меня есть поле выбора, которое заполняется из команды SELECT базы данных с PHP. Тот же самый выбор, который является выбором стран, связан с ним событием jQuery, а также при его изменении и загрузке флага каждой страны.Выполнить функцию jQuery при изменении и загрузке страницы?

$("#CountryA").change(function() { 
    var countryname = this.options[this.selectedIndex]; 
    var fileExist = $.ajax({ 
     url: './../theme/_images/flags/' + $.trim($(countryname).text()) + '.png', 
     type: 'HEAD', 
     error: function() { 
      $("#flag").html('<img src= "./../theme/_images/flags/notFound.png" />'); 
     }, 
     success: function() { 
      $("#flag").html('<img src= "./../theme/_images/flags/' + $.trim($(countryname).text()) + '.png" />'); 
     } 
    }); 
}) 

и это PHP

<?php 
while ($data = $connection->dbFetchArray($resultCountry)) { 
    if ($data["Description"] == @$_GET['country']) 
     echo "<option value='" . $data["Description"] . "' selected='selected'>" . $data["Description"] . "</option>"; 
    else 
     echo "<option value='" . $data["Description"] . "'>" . $data["Description"] . "</option>"; 

} 
?> 

Также с PHP мне удалось запомнить выбранное значение пользователя перед заполните. НО после того, как пользователь сует форму (я использую PHP_SELF, поэтому остаюсь на той же странице), флаг исчезает.

Могу ли я снова выполнить функцию после кнопки sumbit? На pageload или что-то, чтобы отобразить флаг выбранной страны пользователю?

Заранее благодарен!

============================================================================================== EDIT ================================================================== ====

Хорошо, спасибо большое augustknight, и все, что потребовалось время, чтобы ответить ...: D

Я сделал некоторые незначительные изменения в код, потому что эти строки

var country_name = $("#CountryA :selected").val(); 
    set_country_flag_image(this.options[this.selectedIndex]); 

давали мне какой-то странный элемент HTMLOptionElement вместо выбранного имени. Итак, вот окончательный код для дальнейшего использования. : D Еще раз!

$(function() { 
    // Initialize the flag to the selected country (could also be done server-side) 
    var country_name = $("#CountryA").val(); 
    set_country_flag_image(country_name); 


    // Update the flag image when a country is selected 
    $("#CountryA").change(function() { 
     alert($("#CountryA").val()); 
     set_country_flag_image($("#CountryA").val()); 
    }); 
}); 

function set_country_flag_image(country_name) { 
    $.ajax({ 
     url: './../theme/_images/flags/' + country_name + '.png', 
     type: 'HEAD', 
     error: function() { 
      $("#flag").html('<img src= "./../theme/_images/flags/notFound.png" />'); 
     }, 
     success: function() { 
      $("#flag").html('<img src= "./../theme/_images/flags/' + country_name + '.png" />'); 
     } 
    }); 
} 
+0

Итак, выбор страны запомнился, но флаг для этой страны нет? – augustknight

ответ

0

Я думаю, что это то, что вы ищете.

$(function() { 
    // Initialize the flag to the selected country (could also be done server-side) 
    var country_name = $("#CountryA :selected").val(); 
    set_country_flag_image(country_name); 

    // Update the flag image when a country is selected 
    $("#CountryA").change(function(){ 
     set_country_flag_image(this.options[this.selectedIndex]); 
    }); 
}); 


function set_country_flag_image(country_name) 
{ 
    $.ajax({ 
     url:'./../theme/_images/flags/'+country_name+'.png', 
     type:'HEAD', 
     error: 
      function(){ 
       $("#flag").html('<img src= "./../theme/_images/flags/notFound.png" />'); 
      }, 
     success: 
      function(){ 
       $("#flag").html('<img src= "./../theme/_images/flags/'+country_name+'.png" />'); 
      } 
    }); 
} 
+0

Я получаю сообщение об ошибке, что get_country_flag_image не определен ... – Christos312

+0

К сожалению, опечатка. Он должен быть 'set_country_flag_image' – augustknight

+0

О, Боже, я должен был видеть, что: P Кроме того, здесь нужен + Позвольте мне проверить, работает ли он сейчас ...;) – Christos312

0

Отъезд:

и попробовать что-то вроде:

$(function(){ 
    $("#CountryA").on("change", function(e) { 
     var countryname = this.options[this.selectedIndex]; 
     var fileExist = $.ajax({ 
      url:'./../theme/_images/flags/'+$.trim($(countryname).text())+'.png', 
      type:'HEAD', 
      error: function(){ 
       $("#flag").html('<img src= "./../theme/_images/flags/notFound.png" />'); 
      }, 
      success: function(){ 
       $("#flag").html('<img src= "./../theme/_images/flags/'+$.trim($(countryname).text())+'.png" />'); 
      } 
     }); 
     console.log(fileExist); 
    }); 
}) 
+0

У меня уже есть функция внутри document.ready() Я пробовал ваше решение, но, похоже, не работает: S – Christos312

+0

Я отредактировал его, чтобы включить консольный журнал fileExist, посмотрите, что это за ошибка, также попробуйте 'console.log ($ ("# CountryA")) 'для обеспечения того, чтобы элемент был даже выбран и существовал – SpYk3HH

+0

Хорошо, ошибок нет, но я получаю только результаты, если и когда я выбираю страну, и так далее изменение выбора. Если я нажимаю sumbit (и перезагружает страницу), то ничего не выполняется, и я не получаю ничего в консоли, поэтому я думаю, что функция не запускается ... – Christos312

0

Чтобы запустить функцию после того, как страница л oade вам просто нужно сделать:

$(document).ready(function() 
{ 
    //Do something here, like fetching the flag 
}); 
Смежные вопросы