我有一个包含2个下拉列表的表单。第一个过滤第二个。因此,当从第一个下拉列表中进行选择时,我需要回发到控制器以重新填充第二个下拉列表。由于第二个下拉列表是必填字段,因此每次从第一个下拉列表中进行自动后退时,都会触发验证。我正在使用JS来做“autopostback”。
<script type='text/javascript'>
$('#StdThemePropertyId').change(function () {
$(this).parents('form').submit();
});
</script>
请求解决此问题的建议方法。
感谢。
答案 0 :(得分:1)
你应该尝试使用可能有用的ajax。
<script type="text/javascript">
$('#StdThemePropertyId').change(
$.ajax({
url: 'url.php',
success: function(data) {
$('#StdThemePropertyId').html(data);
}
});
}
});
</script>
“data”是在url.php中解析后的返回值。希望这可以帮助。 :)
答案 1 :(得分: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>'
希望它有所帮助!
答案 2 :(得分: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>
如果这对您有帮助,请标记为正确!
答案 3 :(得分:0)
您的问题是在onchange函数上提交表单。如果我是正确的话,这会自动验证表格
答案 4 :(得分:0)
您不应该回复整个表单。您应该进行AJAX调用以获取值并填充第二个下拉列表。它会解决你的问题。