jQuery-UI自动完成会导致验证如果结果为null



漫长的一天,我仍然在这一张桌子上殴打我的头。我想我已经在堆栈溢出以及大多数jQuery UI文档上阅读了每个jQuery UI自动完整的帖子。

问题:

我在ASP.NET MVC 4应用程序中具有表格。该表格用于提交时间表/工作票。用户选择一个项目,并基于该项目,启用了工作订单号的自动完成字段。如果用户为该项目选择和现有的工作订单号,我将填充两个其他输入,其中包含有关工作订单的信息。我需要允许用户输入一个全新的工作订单,而无需选择自动完成建议的工作单,并且仍然具有表单验证。问题在于,如果我不从自动完成中选择建议,则验证会失败。

jQuery-UI文档确实表明该方法可用于使用,但我并没有找到一个很好的示例,说明如何使用它们,实际上最好在我的情况下使用它们。另外,可能值得注意的是,我正在使用jQuery-ui 1.9

我遇到的错误:

system.data.entity.validation.dbentityValidationException:一个或多个实体的验证失败。有关更多详细信息,请参见" EntityValidationErrors"属性。

错误指向我的控制器上的代码线,我在其中调用_db.savechanges();

        if ( ModelState.IsValid )
        {
            _db.WorkTickets.Add(workticket);
            _db.SaveChanges();
        }

模型状态是有效的,我没有试图保存的零值。我的模型确实允许在几个字段上进行零,但是在这种情况下,所有字段均已完成。

如果我从自动填充小部件中选择现有的工作单,或者我将其留为空白,则表格效果很好。仅当我输入新的工作顺序时,它才会失败。我已经设置了一个断点,并验证了该模型确实具有我为工作票键入的值。Wonumber在调用保存更改之前。

这是我的jQuery。

$(document).ready(function () {
    $("#ProjectID").change(function () {
        var id = $(this).val();
        var results = "result";
        var source1 = "Project/QuickCCSearch?project=" + id;
        $("#ChargeCode").autocomplete({ source: source1 });
        $("#ChargeCode").attr("disabled", false)
        var source2 = "Project/QuickPOSearch?project=" + id;
        $("#PONumber").autocomplete({ source: source2 });
        $("#PONumber").attr("disabled", false)
        var source3 = "Project/QuickWOSearch?project=" + id;
        $("#WONumber").attr("disabled", false)
        $("#WONumber").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: source3,
                    data: request,
                    success: function (data) {
                        response(data);
                        if (data.length === 0) {
                            $("#WONumber").attr("check", false);
                        }
                    }
                });
            },
            change: function () {
                if ($("#WONumber").attr("check") != false) {
                    $.getJSON("Project/JobLocation", { wo: $("#WONumber").val() },
                                function (data) {
                                    $("#JobLocation").val(data);
                                });
                    $.getJSON("Project/JobDescription", { wo: $("#WONumber").val() },
                                function (data) {
                                    $("#JobDescription").val(data);
                                });
                }
            }
        });
        $.getJSON("WorkTicket/GetClient/", { id: id },
            function (data) {
                $("#Client").html(data);
            });
        $.getJSON("WorkTicket/GetClientRep/", { id: id },
            function (data) {
                $("#ClientRep").html(data);
            });
        $.getJSON("WorkTicket/GetManager/", { id: id },
            function (data) {
                $("#Manager").html(data);
            });
    });
})

编辑:这是我的html

@model WorkTicket
@{
ViewBag.Title = "Create";
}
<article>
<div class="linearBg1">
    Create Daily Work Ticket
</div>
<br />
@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <div class="linearBg1">
        General Information
    </div>
    <div class="section-span-body">
        <table>
            <tr class="empTableRowBody2">
                <th class="empTableRowBody2">
                    @Html.LabelFor(Model => Model.DateWorked)
                </th>
                <th class="empTableRowBody2" colspan="2">
                    @Html.LabelFor(Model => Model.ProjectName)
                </th>
            </tr>
            <tr>
                <td>
                    @Html.EditorFor(Model => Model.DateWorked)
                </td>
                <td colspan="2">
                    @Html.DropDownList("ProjectID")
                </td>
            </tr>
            <tr class="empTableRowBody2">
                <th class="empTableRowBody2">
                    Client
                </th>
                <th class="empTableRowBody2">
                    Client Rep
                </th>
                <th class="empTableRowBody2">
                    Manager
                </th>
            </tr>
            <tr>
                <td>
                    <div id="Client"></div>
                </td>
                <td>
                    <div id="ClientRep"></div>
                </td>
                <td>
                    <div id="Manager"></div>
                </td>
            </tr>
            <tr class="empTableRowBody2">
                <th class="empTableRowBody2">
                    Charge Code
                </th>
                <th class="empTableRowBody2">
                    PO Number
                </th>
                <th class="empTableRowBody2">
                    Work Order
                </th>
            </tr>
            <tr>
                <td>
                    @Html.TextBoxFor(Model => Model.ChargeCode, new { disabled = true })
                </td>
                <td>
                    @Html.TextBoxFor(Model => Model.PONumber, new { disabled = true })
                </td>
                <td>
                    @Html.TextBoxFor(Model => Model.WONumber, new { disabled = true, check = true })
                </td>
            </tr>
            <tr class="empTableRowBody2">
                <th class="empTableRowBody2" colspan="3">
                    Job Location
                </th>
            </tr>
            <tr>
                <td colspan="3">
                    @Html.TextBoxFor(Model => Model.JobLocation, new { @class = "inputWidth500" })
                </td>
            </tr>
            <tr class="empTableRowBody2">
                <th class="empTableRowBody2" colspan="3">
                    Job Description
                </th>
            </tr>
            <tr>
                <td colspan="3">
                    @Html.TextBoxFor(Model => Model.JobDescription, new { @class = "inputWidth500" })
                </td>
            </tr>
        </table>
    </div>
    <div class="section-span-footer"></div>
    <br />
    <div>
        <input type="submit" value="Next" />
    </div>
}
</article>
@section Menu{
@Html.Partial("_MainMenu")
@Html.Partial("_MenuFooter")
}
@section scripts{
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/Scripts/WorkTicket.js")
}

我敢肯定,我做错了很多事情,因为我是新手,但仍在学习。如果用户没有从自动完成的小部件中选择一个选项,或者小部件的结果是null,是否可以禁用自动完成?预先感谢您!

t。

好吧,我终于解决了它。它与自动完成无关。只是说明我需要了解多少有关jQuery的知识。我的控制器中的代码线很差,在那里我将有关新的工作订单的信息保存回该项目。我缺少一个必需的物品,而我刚刚结束了它。很抱歉成为一个白痴,对jQuery一无所知。谢谢任何人看的人。简直不敢相信我花了很长时间才看到....

相关内容

  • 没有找到相关文章

最新更新