1

いくつかの投稿といくつかのコードを閲覧しましたが、どれも機能していないようです。

同じページの部分ビューで選択した DropDown キーに基づいて WebGrid をリロードする必要があります。現在、ドロップダウン要素を作成し、ビューでこのコードを使用しています:

@Html.DropDownListFor(model => model.Users, Model.Users, 
                                         new { autopostback = "true" })

次の JavaScript コードとともに:

<script type="text/javascript">
    $(document).ready(function () {
        $('select:[autopostback=true],input[type=checkbox]:[autopostback=true],input[type=radio]:[autopostback=true]')
      .live('change',function () {
            $(this).closest('form').submit();
        });
    });
</script>

ブラウザのJavascriptコンソールは次のように述べています:

Uncaught Error:Syntax error, unrecognized expression:select:[autopostback=true],
         input[type=checkbox]:[autopostback=true],
         input[type=radio]:[autopostback=true] 

コントローラーで呼び出しが行われていません。私は何を間違っていますか?

ありがとう。

[編集]

これは現在機能しているため、これまでに機能しているものは次のとおりです。

<script type="text/javascript">
    $(function () {
        $("#UserList").change(function (e) {
            var _this = $(this);

            $.post("@Url.Action("List","MainController", Model)", _this.closest("form").serialize(),
                                                             function (response) {
                                                                 // do something with response.
                                                             });
  });

そしてビュー:

                <td class="tdatadata">@Html.DropDownList("UserList", Model.Users, new { autopostback = "true" })</td>

そしてビューモデル:

public class ModelViewModel
{
    public int idSelected { get; set; }

    [Display(Name = "Usuários Cadastrados")]
    public IEnumerable<SelectListItem> Users { get; set; }
}

しかし、まだ問題があります: 選択したフィールドをコントローラー アクションに渡す方法は? DropDownListFor を使用してみましたが、その場合、オブジェクト名が失われ、Jscript が機能しません。

4

2 に答える 2

3

Try this:

$(document).ready(function () {
    $('select[autopostback=true],input[type=checkbox][autopostback=true],input[type=radio][autopostback=true]').live('change',function () {
        $(this).closest('form').submit();
    });
});

Remove column ":" from the selector which is a meta character and makes the selector invalid, also you don't need them.

EIther try to use id or to get all the input fields of the form use jquery :input selector $('form :input') to select all the input fields of the form.

i.e

$('form').find(':input').live('change',function () {
     $(this).closest('form').submit(); 
});

Also note that live has been deprecated and if you are using jquery version >=1.7 use on() instead of live

于 2013-09-18T02:19:33.040 に答える