0

我有一个带有 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>

“数据”是您在 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 回答
0

你不应该回发你的整个表格。您应该进行 AJAX 调用以获取值并填充第二个下拉列表。它会解决你的问题。

于 2013-07-23T16:45:24.313 回答