0

私は2つのドロップダウンを持つフォームを持っています。1 番目は 2 番目をフィルタリングします。したがって、最初のドロップダウンから選択が行われると、コントローラーにポストバックして 2 番目のドロップダウンを再設定する必要があります。2 番目のドロップダウンは必須フィールドであるため、最初のドロップダウンから自動ポストバックするたびに検証がトリガーされます。この「自動ポストバック」を行うためにJSを使用しています。

        <script type='text/javascript'>
        $('#StdThemePropertyId').change(function () {
            $(this).parents('form').submit();
        });
    </script>

これを解決するための推奨されるアプローチは何でしょうか。

ありがとう。

4

5 に答える 5

1

役立つ可能性のある ajax を使用してみてください。

<script type="text/javascript">

        $('#StdThemePropertyId').change(

            $.ajax({
                url: 'url.php',
                success: function(data) {
                    $('#StdThemePropertyId').html(data);
                }
            });
        }

    });
    </script>

「data」は、url.php で解析された後の戻り値です。お役に立てれば。:)

于 2013-07-23T16:46:09.707 に答える
1

次のようなものが必要です。

コントローラ:

public ActionResult YourActionMethod(int id) 
{ 
  return Json(new {foo="AAA", bar="BBB"});
}

Javascript:

<script type="text/javascript">

    $('#StdThemePropertyId').change(

        $.getJSON("../YourActionMethod", {
            id: someId
           }, function(data) {
                alert(data.foo);
                alert(data.bar);
               //here fill in your dropdownlist
           });
    }
});
</script>'

それが役に立てば幸い!

于 2013-07-23T17:30:03.063 に答える
1

この場合、Json 形式は次のようになります。

コントローラ

public ActionResult YourActionMethod(int id) 
{ 
   return Json(new {
               yourTitle="AAA", 
               yourValue="BBB"
         });
}

JS

<script type="text/javascript">

    $('#StdThemePropertyId').change(
      $.getJSON("../YourActionMethod", function(data){
        $.each(data, function(yourTitle, yourValue) {
          $('#yourDropDownList').append(
            $('<option></option>').val(yourTitle).html(yourValue)
          );
        });
      });
    });

</script>

これが役に立った場合は、正しいとマークしてください。

于 2013-07-24T13:19:38.150 に答える
0

問題は、onchange 関数でフォームを送信することです。私が正しい場合、それは自動的にフォームを検証します

于 2013-07-23T16:37:32.227 に答える