0

ユーザーが最初のドロップダウン (dropdown1) で何かを選択したことに基づいて、ドロップダウン (dropdown2) に入力します。ドロップダウン 1 にはパートナーのリストが含まれ、ドロップダウン 2 にはパートナーに属する人物のリストが入力されます。これは以下の私のjqueryコードです(動作します):

$("select[name='dropdown1']").change(function() {
$.ajax({
    type: "POST",
    url: "ajax/getPeoplebyPartner",
    data: "partnerId="+$("select[name='dropdown1']").val(),
    dataType: 'json',
    success: function(data){
        $("select[name='dropdown2']").empty();
        $("select[name='dropdown2']").append($("<option />").val("").text("select the person").attr('selected','selected').attr('disabled','disabled').attr('style','display:none;'));
        $.each(data, function() { //Filling each option
            $("select[name='dropdown2']").append($("<option />").val(this.id).text(this.name));
        });
    }
});
});
$("select[name='dropdown1']").change();

ただし、ユーザーがフォームを送信してもどこかにエラーがあった場合、dropdown2 は再入力されますが、ユーザーが行った可能性のあるオプションは失われます。私はそれを修正したい。

この部分を変更するのが最善の方法だと思います: $("select[name='dropdown2']").append($("<option />").val(this.id).text(this.name));

の中へ: if(this.id == WHAT THE USER HAD SELECTED BEFORE THE FORM WAS SUBMITTED) $("select[name='dropdown2']").append($("<option />").val(this.id).text(this.name).attr('selected','selected')); else $("select[name='dropdown2']").append($("<option />").val(this.id).text(this.name));

フォームを送信する前にユーザーが選択したものを見つけるにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

0

次の 2 つのオプションがあります。

  1. ユーザーがフォームを送信した後、サーバー側を使用してPOSTヘッダーの内容を分析する必要があります。または、フォームが を使用 GETしている場合は、クエリ文字列を解析する必要があります (これは、javascript を使用して行うこともできます)。
  2. 「送信」アクションを使用せずに、Ajax 呼び出しを使用してフォームを検証します。この Ajax 呼び出しは、ユーザーが行ったエラーに基づいてエラー コードを返すことができ、それに応じてユーザー インターフェイスを更新できます。

2番目のオプションをお勧めします。ここに良い例があります: http://jqueryfordesigners.com/using-ajax-to-validate-forms/

于 2013-03-30T17:31:10.417 に答える