-1

当从 AJAX 调用返回的验证失败时,我试图在字段(内联)上显示错误消息。

        <input type="text" class="text-danger float-right" style="border:none;font-size: smaller" id="@("errorMessage")" readonly />
        <div class="form-group">
            <label asp-for="OrderQuantity" class="control-label"></label>
            <input asp-for="OrderQuantity" id="txt" class="form-control" />
            <span asp-validation-for="OrderQuantity" class="text-danger"></span>
        </div>
        <input type="hidden" id="orderId" name="orderId" value="@Model.OrderId" />
        <button id="button">Click Me</button>
    </form>
 </div>
</div>

@section Scripts {
 <script type="text/javascript">
$("#button").click(function () {
    var orderedQuantity = $("#txt").val();
    var orderId = $("#orderId").val();
    var data = {
        orderId: orderId,
        orderedQuantity: orderedQuantity
    };

    $.ajax({
        type: 'POST',
        url: '@Url.Action("EditItem", "Orders")',
        data: data,
        dataType: "json",
        success: function (result) {
            if (result.status === "NotAvailable") {
                alert("NotAvailable");
                $("#errorMessage").val("Enter a valid Quantity");
            }
            else {
                var url = '@Url.Action("Index", "Orders")';
                window.location.href = url + "?custEmail=xyz@rrr.org";
            }
        },
        error: function (error) {
                alert(error);
            }
    });
});
</script>

}

表单和 AJAX 调用如下所示

result.status从控制器操作返回时, "NotAvailable"我正在创建错误消息$("#errorMessage").val("Enter a valid Quantity");,并在我的字段顶部使用它

        <input type="text" class="text-danger float-right" style="border:none;font-size: smaller" id="@("errorMessage")" readonly />

当我单击下面的按钮后尝试测试验证失败场景时,我看到的是

在此处输入图像描述

我怎样才能回到同一个屏幕并Enter a valid Quantity在现场显示错误

4

1 回答 1

1

您需要进行以下修改:

像这样设置你的按钮类型: <button id="button" type="button">Update</button>而不是<button id="button">Click Me</button>

注意:默认按钮类型是提交,因此它总是发布附加表单POST请求,以便您重定向到该页面。

输出:

在此处输入图像描述

更新:虽然我认为您的errorMessage标签看起来不错,但我通常使用不同的 javascript 或 Jquery 标签幻灯片,以下是供您参考的完整代码。随意根据您的要求进行定制。

HTML:

    <div>
        <input type="text" class="text-danger float-right" style="border:none;font-size: smaller" id="errorMessage" readonly />
        <form asp-action="EditItem">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="OrderQuantity" class="control-label"></label>
                <input asp-for="OrderQuantity" id="txt" class="form-control" />
                <span asp-validation-for="OrderQuantity" class="text-danger"></span>
            </div>
            <input type="hidden" id="orderId" name="orderId" value="123456" />
            <input type="hidden" id="inventoryorderId" name="inventoryorderId" value="22222" />
            <input type="hidden" id="inventoryId" name="inventoryId" value="3333" />
            <button id="button" type="button">Update</button>
        </form>
    </div>

Javascript:

@section Scripts {
    <script type="text/javascript">
    $("#button").click(function () {
        var orderedQuantity = $("#txt").val();
        var orderId = $("#orderId").val();
        var inventoryorderId = $("#inventoryorderId").val();
        var inventoryId = $("#inventoryId").val();
        var data = {
            orderId: orderId,
            inventoryorderId: inventoryorderId,
            inventoryId: inventoryId,
            orderedQuantity: orderedQuantity,
        };

        $.ajax({
            type: 'POST',
            url: '@Url.Action("EditItem", "Order")',
            data: data,
            dataType: "json",
            success: function (data) {
                console.log(data);

                if (data.status === "NotAvailable") {
                    alert("NotAvailable");
                    $("#errorMessage").val("Enter a valid Quantity");
                    return false;
                }
                else {
                    alert("Else fired");
                      var url = '@Url.Action("Index", "Order")';
                window.location.href = url;
                }

            },
            error: function (error) {
                alert("Alert");
            }
        });
    });
    </script>
}

希望这能解决您的问题。

于 2021-11-03T06:41:31.700 回答