在JQuery更改期间获取价值

时间:2016-05-23 21:46:40

标签: javascript php jquery html

我有一个选择菜单,当我点击一个按钮时,它会填充。然后这个菜单有一个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号。我知道我可以扔进一片空白,所以人们不得不改变它。但有没有办法让我立刻做到这一点?我的更改有效,第一个结果不起作用,除非我将其更改并更改回来。

3 个答案:

答案 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()事件来检测离开控件的用户并获取该点的值。