$(function() {
function split( val ) {
return val.split( /;\s*/ );
}
function extractLast( term ) {
return split( term ).pop();
}
$("#SearchString")
// don't navigate away from the field on tab when selecting an item
.bind("keydown", function(event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).autocomplete("instance").menu.active) {
event.preventDefault();
}
})
.autocomplete({
source: function(request, response) {
$.ajax({
url: "/Contract/Autocomplete",
type: "POST",
dataType: "json",
data: { Users: request.term },
success: function(data) {
response($.map(data, function(item) {
return { label: item.FirstName, value: item.LastName, id: item.User_Id };
}));
}
});
},
search: function() {
// custom minLength
var term = extractLast( this.value );
if ( term.length < 2 ) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function (event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.item.value);
$('#Hidden1').val(ui.item.id);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join("; ");
return false;
}
});
});
public JsonResult Autocomplete(string term)
{
var usersugg = from s in _usRepository.Queryable()
select new {s.Lastname, s.User_Id, s.Firstname};
var nameselect = usersugg.Where(s => s.Firstname.ToLower().StartsWith(term.ToLower())
|| s.Lastname.ToLower().StartsWith(term.ToLower()));
var namelist = (from n in nameselect
select n.Lastname
+ ", "
+ n.Firstname);
return Json(namelist, JsonRequestBehavior.AllowGet);
}
public PartialViewResult Index(int? Id)
{
var user = from s in _usRepository.Queryable()
where s.User_Id == Id
select s;
return PartialView(user.ToList());
}
<tr>
<td>
<strong>Administrators</strong>
</td>
<td>
@Html.Editor("SearchString", null, new { id = "SearchString1", @style = "width: 400px; Height: 40px" })
@Html.HiddenFor(model => model.Permission_Id, new {@id = "Hidden1"})
<p>Enter users to begin searching</p>
</td>
</tr>