4

jQueryUIオートコンプリートで非表示の入力の値を設定した後

$( "#PName" ).autocomplete({            
            search: function(event, ui) {
             $("#PLoading").show();
            },
            source: "Script_URL",
            minLength: 2,            
            select: function( event, ui ) {
                $("#PLoading").hide();
                $("#PName").val(ui.item.value);
                $("#PID").val(ui.item.id);
            }
        });

<input type="hidden" id="PID" name="PID" value="0" />

オートコンプリートを使用して非表示の入力から他のURLに新しい値を送信するには、0の値を送信します

0値は非表示の入力デフォルト値です(テストでは、デフォルト値を90に変更しましたが、デフォルト値(90)を再度送信します)

 $("#CName").autocomplete({    
        search: function(event, ui) {
         $("#CLoading").show();
    alert ($("#PID").val()); // it's worked, and alert new value , from hidden input
        },
        source: "Script_URL/"+$("#PID").val(),  /// but it's not worked ,  does not send new value from hidden input 
        minLength: 2,            
        select: function( event, ui ) {
            $("#CLoading").hide();
            $( "#CName" ).val(ui.item.value);
            $( "#CID" ).val(ui.item.id);

        }
    });
4

1 に答える 1

2

コードは、ウィジェットが初期化されるときに、非表示の入力の値を1回だけ読み取ります。ソースURLを毎回更新する場合は、sourceパラメーターに関数を指定して、AJAXリクエストを自分で作成する必要があります。

$( "#PName" ).autocomplete({            
    search: function(event, ui) {
        $("#PLoading").show();
    },
    source: function () {
        $.ajax({
            url: "Script_URL/" + $("#PID").val(),
            data: request,
            dataType: "json",
            success: function (data) {
                response(data);
            },
            error: function () {
                response([]);
            }
        });
    },
    minLength: 2,            
    select: function( event, ui ) {
        $("#PLoading").hide();
        $("#PName").val(ui.item.value);
        $("#PID").val(ui.item.id);
    }
});
于 2012-12-16T00:27:55.567 に答える