1

我看了几个类似的问题,但我无法让它工作。

我在表单中有一些单选按钮。我不想选择选项并单击提交按钮,而是希望在用户单击单选按钮时提交表单。

所以我隐藏了提交按钮并放置了一个模拟按钮点击的javascript函数(我也试图让它与按钮点击一起工作,但这似乎不是问题)。

在我看来,我有:

<script type="text/javascript" src="/Scripts/jquery-1.9.1/jquery-1.9.1.min.js" ></script>
<script type="text/javascript" src="/Scripts/jquery-1.9.1/jquery.unobtrusive-ajax.min.js"></script>

<script type="text/javascript">
    function change() {
        $('#buttonradio').click();
    }
</script>

<h2>Dashboard</h2>

<div class="Dashboard" id="itemsDshBrd" style="overflow:auto;height:97%;">

    <div id="DshBrdRadioGroup" style="float:right;font-size:small">   

        <% using (Ajax.BeginForm("Index", "DshBrd", new { value = 1 }, new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "stations" })) { %>

            <input class="radioclass" id="r1" name="radiogroup" type="radio" value="1" onclick="change()" checked/> A
            <input class="radioclass" id="r2" name="radiogroup" type="radio" value="2" onclick="change()"/> B     
            <input class="radioclass" id="r3" name="radiogroup" type="radio" value="3" onclick="change()"/> C
            <input class="radioclass" id="r4" name="radiogroup" type="radio" value="4" onclick="change()"/> D

            <input id="buttonradio" type="submit" value="Submit" style="visibility:hidden"/>

        <% } %>        

    </div>   

    <div id="stations">
        <% Html.RenderPartial("~/Views/DshBrd/Stations.ascx"); %>
    </div>

</div>

*我知道我正在发送 value = 1。

在我的控制器中,我有:

[HttpPost]
public ActionResult Index(int value)
{
    if (Request.IsAjaxRequest())
    {
        return PartialView("~/Views/DshBrd/Stations.aspx");
    }

    return View("~/Views/DshBrd/Index.aspx");
}

哪里Request.IsAjaxRequest()永远不真实。

我的 Web.Config 也可以:

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

有任何想法吗?

4

3 回答 3

1

我认为您提交的表格不正确。

尝试完全删除提交按钮,并将更改代码替换为:

function change() {
    $("#DshBrdRadioGroup form").submit();
}

听起来您的不显眼的 ajax 也无法正常工作。检查以下内容:

  • ClientValidationEnabled 在您的 web.config 应用程序设置中为 true。
  • UnobtrusiveJavaScriptEnabled 在您的 web.config 应用程序设置中为 true。
  • 您在页面某处引用 jquery.unobtrusive-ajax.min.js 脚本。
于 2013-08-07T14:47:48.977 回答
1

我认为这个问题与您的模块 binder 有关。在您的操作中将变量名称更改为radiogroup

于 2013-08-07T17:02:12.470 回答
0

首先,您正在尝试通过您所描述的内容而不是通过 AJAX 进行常规发布。它永远不会是真的

因此,您需要使用http://malsup.com/jquery/form/之类的东西,这样可以很容易地从 AJAX 进行操作。

一旦您使用 AJAX 进行提交,您实际上不必onclick在每个单选按钮元素中使用。假设这些单选按钮是使用类radioclass的唯一单选按钮,我会这样做:

$('.radioclass').click(function () {
    $(this).parents('form:first').trigger('submit');
});
于 2013-08-07T14:59:41.337 回答