自动完成选择复杂问题?jquery



我将自动完成功能应用于我的一个文本框,我成功地在字符输入上填充数据,现在我需要一些独特的功能到我的文本框。

我的要求是我不希望用户输入垃圾值和保存,而我更喜欢用户从列表中选择。一件事只是以防万一,如果用户输入一些东西,并试图保存意味着验证应该失败,任何代价,只有事情只有当我从列表中选择并保存。

我的工作代码:

$('#txtSalesPerson1').autocomplete({
    source: function (request, response) {
        $.ajax({
            url: "/api/Values/" + request.term,
            dataType: 'json',
            type: 'Post',
            success: function (data) {
                response($.map(data.slice(0, 10), function (item) {
                    return {
                        label: item.Text,
                        value: item.Value
                    }
                }));
            }
        })
    },
    select: function (event, ui) {
        $('#txtSalesPerson1').val(ui.item.label);
        $('#Id').val(ui.item.value);
        return false;
    },
    minLength: 1
});

如果有任何帮助,我都非常感激。

我现在在想什么:

text1 :我必须将文本框的输入值与我获得的数据进行比较并相应地验证,但我的TL觉得这是一种很大的方式,你不能使用它。

思想2:离开焦点从文本框思考验证,但再次它将部分地使我去服务器思想1的方式。

朋友们,我现在没有任何线索可以用最好的方法移动一个头。

如果我必须解决这个问题,我将更改jquery验证的忽略设置以拾取隐藏字段。

$.validate.defaults.ignore="";

你需要在改变这个

后重新绑定你的表单验证器

在此之上,我将添加以下内容到视图中的模型

[Required]
[Range(1, int.maxvalue)
public int Id {get;set; }

这样,只有当一个值被选中时,验证才会通过服务器端和客户端。

有点蛮力。

如果你这样做,记得重载自动完成的搜索功能,以清除一个值的#Id,所以如果他们再次搜索,他们将被迫重新选择一个条目

另一种方法是在表单提交上执行OnBegin处理程序(如果您使用ajax)。beginform(否则绑定一个提交处理程序),检查$("#Id").val()是否大于零,如果不大于零则返回false以停止表单提交。

你需要一个反馈系统,让用户知道他们做错了什么

最新更新