1

フォームのテキスト入力フィールドに入力された情報に基づいて選択リストを設定する必要があります。Ajax の部分を理解しましたが、期待どおりに動作しません。アイデアは、ユーザーが名前フィールドに入力すると、選択リストに適切なオプションが入力されるというものです。関数は機能しますが、var firstname = $("#fn").val(); 呼び出しは常に、フィールドに入力された内容よりも 1 文字少ない文字を返します。どんな助けでも感謝されます!

以下は、関連する html とコードです。

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#fn").keypress(function() {
    var firstname = $("#fn").val();
    $.get("CustomerList", {FirstName: firstname}, function(responseText) {
    $("#div1").text(responseText);
    });
});
    });
</script> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Show all names</title>
</head>

<body>
    <form method="GET" action='Controller' name="CreateNTF"   >
    <table>
        <tr>
            <td>Create User:</td>
            <td><input id="fn" type="text" name="FirstName" /></td>
            <td><input id="ln" type="text" name="LastName"/></td>
        </tr>  
        <tr>
            <td>Carrier</td>
            <td>
            <span id="div1"></span>
            </td>
        </tr>
    </table>
    <input type="submit" name="submit" value="Submit" onClick="return validateForm();"/>
    </form>
</body>

</html>
4

2 に答える 2

1

keyupの代わりに使用してみてくださいkeypress。たぶん、テキストの変更を認識keypressさせるには早すぎます。.val()

別の解決策は、自分で最終的な文字列を計算することです。

$("#fn").keypress(function(e)
{
    var firstname = $("#fn").val() + String.fromCharCode(e.which);
    $.get("CustomerList", {FirstName: firstname}, function(responseText) {
    $("#div1").text(responseText);
    });
});

しかし最後に、この男はあなたと同じ問題を抱えているようで、提案された解決策も同じでした。

于 2013-01-17T18:47:04.273 に答える
0

keyup と keypress を使用すると、すべての文字で AJAX 呼び出しがトリガーされます。ユーザーが入力を終了して入力ボックスから出た後、入力ボックスがフォーカスを失ったときに ajax 呼び出しをトリガーする change イベントを使用することをお勧めします。このようにして、完全な入力文字列を取得し、不要な ajax 呼び出しを回避します。

于 2013-01-17T19:06:12.110 に答える