Asp.net mvc 3 如何在jQueryUI自动完成中强制停止用户提交页面数据?

Asp.net mvc 3 如何在jQueryUI自动完成中强制停止用户提交页面数据?,asp.net-mvc-3,jquery-ui,jquery-ui-autocomplete,Asp.net Mvc 3,Jquery Ui,Jquery Ui Autocomplete,我在使用mvc3开发的网站中使用了jQueryUI我使用了jquery ui自动完成机制。 我使用了以下jquery函数- /// script to load owner for owner dropdown. $(function () { $("#Owner_FullName").autocomplete({ source: function (request, response) { $.ajax({ url

我在使用mvc3开发的网站中使用了jQueryUI<代码>我使用了jquery ui自动完成机制。

我使用了以下jquery函数-

/// script to load owner for owner dropdown.
$(function () {
    $("#Owner_FullName").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "/Employee/AutocompleteSuggestions",
                type: "POST",
                dataType: "json",
                data:
                    {
                        term: request.term
                    },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item.FullName, value: item.Id }
                    }
                    ))
                }
            })
        },
        minLength: 1,
        focus: function (event, ui) {
            $("#Owner_FullName").val(ui.item.label);
            return false;
        },
        select: function (event, ui) {
            if (ui.item) {
                $("#Owner_FullName").css('border', '');
                $("#Owner_FullName").val(ui.item.label);
                $("#OwnerId").val(ui.item.value);
                return false;
            }
        },
        change: function (event, ui) {
            if (ui.item == null) {
                $("#Owner_FullName").css({ 'border': '1px solid #ff0000' });
                $("#OwnerId").val(null);
            }
        }
    });
});
我已经在文本框中显示了所有者名称,并将OwnerId设置为隐藏字段以进行进一步处理

为了处理用户在文本框中键入内容而不从下拉列表中选择项目的情况,我使用了change event,在该事件中,我使用reset Hidden field将其重置为null并将css应用于文本框

现在我的问题是“我的文本框”字段不是必填字段,如果用户键入文本框并简单地提交数据,则应显示警告类消息,在用户清除文本框值之前,不应执行提交过程。


如何处理此问题?

如果用户只需在“自动完成”框中键入值而无需从下拉列表中进行选择时,您希望显示错误情况,则可以使用“自动完成”的
change
事件突出显示此错误,并更新隐藏字段

change: function (event, ui) {
  if (ui.item == null || ui.item == undefined) {//I also use the undefined check
    $("#OwnerId").val("");//I have never used null before when using val(). But you always want to clear out the hidden field if the user does not select from the drop down.
      if ($.trim($("#Owner_FullName").val()) == "") {//check and see if the user cleared the field out
        $("#Owner_FullName").css({ 'border': '' });
        //The autocomplete field is blank. Then put code here that allows the submit.
        }
          else
       {
          $("#Owner_FullName").css({ 'border': '1px solid #ff0000' });
          //The autocomplete field is NOT blank. Then put code here that prevents the submit.
       }//close the if = "" statement
    }
  }//close function

另一个选项是检查提交时的“自动完成”字段,查看是否选择了某些内容,如果未选择某些内容,则停止发布。您可以检查自动完成是否从列表中选择了具有

$("#Owner_FullName").data("autocomplete").selectedItem != null //or undefined for that matter


让我知道,如果这些工作为你

如果我正确理解了您的问题,您不希望最终用户在“自动完成”文本框为空/空时完成提交过程。这是正确的吗?如果是这样,那么为什么不先禁用/隐藏提交按钮,然后仅在选中某个项目时显示?注意:您还可以根据键入的内容和未从列表中选择的内容强制检查服务器,以查看其是否有效。如果您想这样做,请告诉我,我可以帮助您进行编码。@JoeFletch:我的自动完成文本框字段不是必填字段。但我的问题是,当用户不从下拉列表中选择时,它应该显示错误消息,当用户清除文本框时,只有用户可以发布数据。可以使用jquery吗?如何做到这一点?有几种方法。我会发布一个答案。