问题描述
|
我有一个HTML5表单,其动作定义如下:
@using (Html.BeginForm(\"SearchAction\",\"ResultsController\"))
该表单包含两个文本字段:
<input type=\"text\" name=\"txtSearchTerm\" id=\"txtSearchTerm\" class=\"frontPageInput\" placeholder=\"Begin your search...\" required />
<input type=\"text\" name=\"txtGeoLocation\" id=\"txtGeoLocation\" class=\"frontPageInput\" required />
txtGeoLocation字段是一个自动完成字段,它是从缓存的对象提供的,通过控制器以及模型存储库类通过以下jQuery代码提供:
<script type=\"text/javascript\" language=\"javascript\">
$(function () {
$(\"#txtGeoLocation\").autocomplete(txtGeoLocation,{
source: function (request,response) {
$.ajax({
url: \"/home/FindLocations\",type: \"POST\",dataType: \"json\",selectFirst: true,autoFill: true,mustMatch: true,data: { searchText: request.term,maxResults: 10 },success: function (data) {
response($.map(data,function (item) {
return { label: item.Geodisplay,value: item.Geodisplay,id: item.GeoID }
}))
}
})
},select: function (event,ui) {
alert(ui.item ? (\"You picked \'\" + ui.item.label + \"\' with an ID of \" + ui.item.id)
: \"nothing selected,input was \" + this.value);
document.getElementById(\"hidLocation\").value = ui.item.id;
}
});
});
那里有调试警报。单击下拉菜单中的文本时,会触发此警报,但是如果您输入整个单词并单击“提交”,则不会触发。
我首先要验证客户端地理文本框中的文本,以确保它是集合中包含的值,而不是将文本框显示为红色,以进行交流。
谢谢。
解决方法
您可以使用[Remote()]属性使用jquery远程验证来验证列表中的值。回发时,您还必须在服务器端进行相同的检查。