我将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方式进入服务器。
朋友们,我现在不知道如何以最好的方式移动头像。
问候
答案 0 :(得分:1)
如果我必须解决这个问题,我会更改jquery validate上的忽略设置以获取隐藏字段。
$.validate.defaults.ignore="";
更改此
后,您需要重新绑定表单验证程序除此之外,我还会在视图中为模型添加以下内容
[Required]
[Range(1, int.maxvalue)
public int Id {get;set; }
这样,如果选择了值,验证将仅传递服务器端和客户端。
蛮力的方法。
如果你这样做,请记住重载自动完成的搜索功能以清除值的#Id,这样如果他们再次搜索,他们将被迫重新选择一个条目
另一种方法是在表单提交上执行类似OnBegin处理程序的操作(如果使用的是ajax.beginform,否则绑定提交处理程序)并检查$(“#Id”)。val()大于零并返回false以停止表单提交(如果不是)。
您需要推出一个反馈系统,以便用户知道他们在使用该方法时做错了什么