html select list onchange не смог вызвать метод в Google Chrome (работает для IE)

0

У меня есть список select и options заполняются из базы данных, как показано ниже:

<select name="users" onchange="showUser()">
<?php 
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';   
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT userName FROM user';

mysql_select_db('finance');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    $val = $row['ID'];
    echo "<option value=$val>" . $row['userName'] . "</option>";
}
?>
</select>

И это очень простая функция предупреждения:

<script type="text/javascript">
function showUser()
{
    alert("haha");
}
</script>

Я могу получить значения из базы данных, но всякий раз, когда onChange, нет предупреждения?

EDIT:

Он работает над IE, но не Google Chrome?!

  • 0
    Нажмите F12 в вашем браузере, посмотрите, что произойдет, когда вы измените элементы в выборе.
  • 0
    любая ошибка в консоли браузера
Показать ещё 4 комментария
Теги:
select

3 ответа

0

Прежде всего, избегайте использования встроенного JS. Итак, удалите событие onchange в элементе <select>:

<select name="users">...</select>

И вместо этого полагайтесь на использование обработчиков событий, предоставляемых jQuery, для этого:

$(function() {
    $("select[name='users']").change(function() {
        alert("onchange() event detected");
    });
});

Если ваш элемент <select> динамически добавлен, но вы можете использовать метод .on() для привязки события:

$(function() {
    $(document).on("change", "select[name='users']", function() {
        // Rest of the code
    });
});

На стороне примечания, вероятно, не очень хорошо использовать функции mysql_ больше - попробуйте mysqli_ миграцию на mysqli_ или PDO.

http://jsfiddle.net/teddyrised/K2GMx/

  • 0
    Используя ваш способ, я не могу даже alert о IE, на самом деле становится все хуже
  • 0
    Нет, похоже, отлично работает на JSFiddle . Я использую Chrome. Какую версию IE вы используете? Вы загрузили jQuery, и он загружен правильно? Если Скрипка работает для вас, это означает, что что-то не так или мешает в вашем собственном примере.
Показать ещё 2 комментария
0

попробуй это

$('select').on('change', function() {
    $(this).find(':selected').val();
})
  • 0
    Оставайтесь прежними, не удалось вызвать метод
  • 1
    Кстати: this.value не будет работать. Это $(this).find(':selected').val()
0

вы должны поместить функцию js перед вашим выбором:

<script>
function showUser()
{
    alert("haha");
}
</script>

<select name="users" onChange="showUser();">
<option value=sdf>sdfs</option>
<option value=s1df>sdf1s</option>
</select>

http://jsfiddle.net/xd8b6/

или поместите свою функцию в <head> документа

  • 0
    script находится в разделе <head> , как уже упоминалось, он работает на IE, но не на Chrome
  • 0
    @IsaacLem посмотри на мою скрипку в твоем хроме - это работает? какую версию Chrome вы используете?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню