【发布时间】:2015-01-15 10:40:42
【问题描述】:
我有 2 个带有 jquery 代码的单选按钮,它们仅使用他们选择的选项重建一个下拉列表。我有下面的代码,它转到正确的方法,构建选择列表的方法正常工作,在方法完成后,下拉列表项根本不会改变。一切似乎都是正确的,但它只是不起作用。有人有什么想法吗?
查看
$('#singleSpacingRadio').change(function () {
var url = "/Home/NumberOfPagesList?id=" + $('#singleSpacingRadio').val();
$.getJSON(url, function (data) {
var items = "<option>--Test--</option>";
$.each(data, function (i, numberOfPages) {
items += "<option value='" + numberOfPages.Value + "'>" + numberOfPages.Text + "</option>";
});
$("#numberOfPagesList").html(items);
});
});
$('#doubleSpacingRadio').change(function () {
var url = "/Home/NumberOfPagesList?id=" + $('#doubleSpacingRadio').val();
$.getJSON(url, function (data) {
var items = "<option>--Test--</option>";
$.each(data, function (i, numberOfPages) {
items += "<option value='" + numberOfPages.Value + "'>" + numberOfPages.Text + "</option>";
});
$("#numberOfPagesList").html(items);
});
});
<div class="row">
@Html.LabelFor(model => model.Spacing, "Spacing:")
@Html.RadioButtonFor(model => model.Spacing, "Single", new { id = "singleSpacingRadio" }) Single
@Html.RadioButtonFor(model => model.Spacing, "Double", new { id = "doubleSpacingRadio" }) Double
</div>
控制器
public ActionResult NumberOfPagesList(string id)
{
var numberOfPagesList = from n in NumberOfPages.GetNumberOfPages()
where n.Spacing == id
select n;
if (HttpContext.Request.IsAjaxRequest())
{
return Json(new SelectList(numberOfPagesList.ToArray(), "numberOfPagesValue", "numberOfPagesName"), JsonRequestBehavior.AllowGet);
}
else
{
return RedirectToAction("Contact");
}
}
public class NumberOfPages
{
public string Name { get; set; }
public string Value { get; set; }
public string Spacing { get; set; }
public static IQueryable<NumberOfPages> GetNumberOfPages()
{
return new List<NumberOfPages>
{
new NumberOfPages
{
Name = "1 Page (Approx. 550 Words)",
Value = "1",
Spacing = "Single"
},
new NumberOfPages
{
Name = "1 Page (Approx. 275 Words)",
Value = "1",
Spacing = "Double"
},
new NumberOfPages
{
Name = "50 Pages (Approx. 13750 Words)",
Value = "50",
Spacing = "Double"
}
}.AsQueryable();
}
【问题讨论】:
-
尝试调试 javascript。是否有任何控制台错误?
-
当
$('#singleSpacingRadio').change()事件发生时,$('#doubleSpacingRadio').change()事件也会触发,因此您只需一遍又一遍地做同样的事情。 -
这怎么可能?无论如何,我认为它应该单独执行每个事件
-
它是一个单选按钮组。当一个被选中时,另一个未被选中 - 两者都会触发更改事件!
-
我不知道
asp.net究竟在这里生成了什么 - 也许您也可以向我们展示生成的html吗?
标签: javascript jquery asp.net asp.net-mvc-3