html 选择列表更改无法在谷歌浏览器上调用方法(适用于 IE)

html select list onchange failed to call method on Google Chrome (Works for IE)

本文关键字:方法 调用 适用于 IE 谷歌浏览器 列表 选择 html      更新时间:2023-09-26

我有一个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>

我确实能够从数据库中获取值,但是每当更改时,都没有警报?

编辑

它适用于IE但不适用于谷歌浏览器?!

你应该把你的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>

首先,避免使用内联JS。因此,请删除 <select> 元素中的 onchange 事件:

<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_或PDO。

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

试试这个

$('select').on('change', function() {
    $(this).find(':selected').val();
})