自动完成选择复杂问题? jQuery的

时间:2014-06-02 13:36:50

标签: jquery asp.net-mvc-4

我将AUTO COMPLETE功能应用到我的一个文本框中,我在字符输入时成功填充数据,现在我的texbox需要一些独特的功能。

我的要求是我不希望用户输入JUNK值并保存,而我更喜欢用户从列表中选择。有一件事,以防万一用户输入内容并尝试保存意味着VALIDATION应该不惜任何代价失败,只有当我从列表中选择并保存时才能正常工作。

我的工作代码:

$('#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
});

非常感谢您对此的任何帮助。谢谢。

到目前为止我在想什么:

Tought 1 :我必须将输入的textbox值与我得到的数据进行比较并相应地验证但是我的TL认为这是一个很大的方法而你无法使用它。

Tought 2:关注焦点从文本框思考到验证,但是它会再次让我以1方式进入服务器。

朋友们,我现在不知道如何以最好的方式移动头像。

问候

1 个答案:

答案 0 :(得分:1)

如果我必须解决这个问题,我会更改jquery validate上的忽略设置以获取隐藏字段。

$.validate.defaults.ignore="";

更改此

后,您需要重新绑定表单验证程序

除此之外,我还会在视图中为模型添加以下内容

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

这样,如果选择了值,验证将仅传递服务器端和客户端。

蛮力的方法。

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

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

您需要推出一个反馈系统,以便用户知道他们在使用该方法时做错了什么