我有一个选择菜单,当我点击一个按钮时,它会填充。然后这个菜单有一个on change事件,它用它里面的任何东西改变它下面的div。问题是第一个值不起作用,因为它不是“改变”。
HTML / PHP之前:
<select>
<option>Pre Fill</option>
</select>
HTML / PHP之后:
<option value="<?=$row["ID"]?>"><?=$row["Person"]?></option>
问题
function FillList(str) {
$.get( "get.php?q="+str, function( data ) {
$( "select" ).html( data );
});
var Id = $('select').val();
$.get( "fill.php?q="+Id, function( data ) {
$( ".Info_Div" ).html( data );
});
}
对于我的var Id
,它会返回Pre Fill而不是第一个结果ID号。我知道我可以扔进一片空白,所以人们不得不改变它。但有没有办法让我立刻做到这一点?我的更改有效,第一个结果不起作用,除非我将其更改并更改回来。
答案 0 :(得分:1)
您可以在加载.change()
后触发<select>
事件。然后,它将运行更新另一个<div>
中的值的代码。
$.get( "get.php?q="+str, function( data ) {
$( "select" ).html( data ).change();
});
此外,$.get
是异步的,这意味着它不会暂停执行脚本直到响应返回,而是继续执行下面的语句。要使Id
包含响应中的内容,它必须位于响应回调中。
$.get( "get.php?q="+str, function( data ) {
$( "select" ).html( data ).change();
var Id = $('select').val();
$.get( "fill.php?q="+Id, function( data ) {
$( ".Info_Div" ).html( data );
});
});
答案 1 :(得分:0)
我认为您应该在
中调用您的函数$()就绪();
阻止所以在你的文档加载后立即调用
答案 2 :(得分:-1)
常见问题。最常见的解决方案:
<select>
<option>Choose:</option>
<?php
While Loop
<option value="<?=$row["ID"]?>"><?=$row["Person"]?></option>
<option value="<?=$row["ID"]?>"><?=$row["Person"]?></option>
<option value="<?=$row["ID"]?>"><?=$row["Person"]?></option>
EndWhile
?>
</select>
您还可以使用.blur()
事件来检测离开控件的用户并获取该点的值。