【问题标题】:Disable Ajax.BeginForm if user input does not match the specified conditions如果用户输入与指定条件不匹配,则禁用 Ajax.BeginForm
【发布时间】:2018-02-21 08:32:06
【问题描述】:

客户端:

@using (Ajax.BeginForm("AddClusion", clusionOptions))
{
    @Html.TextArea("clusionValue", new { onkeyup = "SyncContents(); return false;" })
    <input type="submit" value="Add" onclick="ValidateInput(); ClearDirtyFlag(['clusionValue']);" />
}

<script>
    function ValidateInput()
    {
        if (@Html.Raw(Json.Encode(Model.Name)) === "CheckII" &&
        $("#clusionType").val() !== "EcuMnemonic" &&
        $("#clusionValue").val().length > 10)
        {
            //do not submit data to the server.
        }
    }
</script>

服务器端:

[Transactional]
public JsonResult AddClusion(Guid id, ClusionType clusionType, string clusionValue, bool isInclusion)
{
    var product = NonDiagnosticRepository.Product(id);

    product.AddClusion(new ProductClusion { Type = clusionType, Value = clusionValue, IsInclusion = isInclusion, ProductId = id });

    return Json(new { success = true });
}

如果用户输入不符合指定条件,是否可以不提交数据到服务器?如果是,那怎么办?

【问题讨论】:

    标签: javascript html ajax asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    我建议使用 jquery 验证 (https://jqueryvalidation.org/documentation/)。这适用于客户端(浏览器)端。由于 Ajax.BeginForm 在服务器端运行,因此无法在服务器端禁用它,但是您可以使用以下方式隐藏“AddClusion”的 DOM 元素:

    document.getElementById('AddClusion').style.display = "none";

    【讨论】:

      猜你喜欢
      • 2020-10-01
      • 2022-01-24
      • 2015-07-19
      • 1970-01-01
      • 2017-12-04
      • 2011-07-18
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多