1

Spring MVC を使用してオートコンプリート (jquery) に取り組んでいます。私はすべてを行いました.データはオートコンプリートで正しく表示されていますが、プロパティはonfocusイベントを表示しません. onfocus メソッドで「ui.item.username」を呼び出すと、常に null 値が表示されます。

$( "#city" ).autocomplete({
    minLength: 0,
    source: function( request, response ) {
        $.ajax({
            url: "person.ajax",
            dataType: "json",
            data: {
                maxRows: 6,
                startsWith: request.term
            },
            success: function( data ) {
                response( $.map( data.zipcodes, function( item) {
                    return {
                        label: item.realName + item.realName,
                        value: item.username
                    }
                }));
            }
        });
    },

ここまでは正常に動作しますが、onfocus メソッド (次のメソッド) でプロパティを呼び出すと、フォーカス イベント (jquery) に null が表示されます

focus: function(event, ui) {
    alert($( event.target ).val(ui.item.ealName)); // it displays me null value at this point
},
select: function( event, ui ) {
}

なにか提案を?

4

2 に答える 2

1

AJAXリクエストの関数で構築している結果オブジェクトsuccessは、オートコンプリートウィジェットのすべてのメソッド/イベントハンドラーで使用されます。後でプロパティにアクセスする場合は、response関数に渡すデータソースを作成するときに、そのプロパティを含める必要があります。

success: function( data ) {
    response( $.map( data.zipcodes, function( item) {
        return {
            label: item.realName + item.realName,
            value: item.username,
            realName: item.realName // include realName
        }
    }));
}

(コメントから):

また、alert関数を返すnullので、値だけをアラートしたい場合は、次を使用します。

alert(ui.item.realName)

代わりは。

于 2013-01-04T17:54:29.233 に答える
0

SpringMVCを使用してオートコンプリートドロップダウンを実装しました。今私の質問は、ユーザーがオートコンプリートドロップダウンから値を選択/選択したときです。次に、選択した値が正しいかどうかを確認するにはどうすればよいですか?言い換えれば、ユーザーがオートコンプリートから正しい値を選択したかどうかを確認したいのです。ユーザーは入力テキストボックスにランダムな文字列を入力して送信できるため(技術的には、ユーザーがドロップダウンから任意の値を選択すると、送信がユーザーに表示されることを確認します。ユーザーが間違ったデータを入力した場合、ボタンは表示されません。有効化する)。

これがコードです

<script>
    $(function() {
        $( "input[name='creditCheck']" ).autocomplete({
            minLength: 2,
            source:function( request, response ) {
                $.ajax({
                    url: "creditCheck.ajax",
                    dataType: "json",
                    data: {
                        maxRows: 6,
                        startsWith: request.term
                    },
                success: function( data ) {
                    response( $.map( data.creditCheckData, function( item) {
                        return {
                            creditName: item.creditName,
                        }
                    }));
                }

                });
            },

上記のコードワードは問題なく、サーバーからリストを取得し、オートコンプリートデータを表示します。次のコードでは、ボタンを切り替えるだけです。ただし、ユーザーがドロップダウンから任意の値を選択すると、送信が表示されます。ユーザー、およびユーザーが間違ったデータを入力した場合、ボタンはアクティブにしないでください。

$('input[name="creditCheck"]').bind("change keyup", function () {
    if ($(this).val()!="") {
        $(this).nextAll("button[name='add']:first").removeAttr('disabled');
    } else {
        $(this).nextAll("button[name='add']:first").attr('disabled', 'disabled');
    }
});
于 2013-01-07T21:30:59.110 に答える