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,都没有警报?

编辑

它可以在 IE 上运行,但不能在 Google Chrome 上运行?!

4

3 回答 3

0

尝试这个

$('select').on('change', function() {
    $(this).find(':selected').val();
})
于 2013-10-18T10:59:40.010 回答
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_或 PDO。

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

于 2013-10-18T11:03:16.110 回答
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>文档中

于 2013-10-18T11:07:20.980 回答