我正在使用Spring MVC进行自动完成(jquery)。我已经做了一切,数据在自动完成显示正确,但属性不显示onfocus事件。每当我调用ui.item。在onfocus方法中,它总是显示空值。
$( "#city" ).autocomplete({
minLength: 0,
source: function( request, response ) {
$.ajax({
url: "person.ajax",
dataType: "json",
data: {
maxRows: 6,
startsWith: request.term
},
success: function( data ) {
response( $.map( data.zipcodes, function( item) {
return {
label: item.realName + item.realName,
value: item.username
}
}));
}
});
},
它工作得很好,直到这里,但当我调用属性在onfocus方法(在以下方法),它显示我nullIn focus事件(jquery)
focus: function(event, ui) {
alert($( event.target ).val(ui.item.ealName)); // it displays me null value at this point
},
select: function( event, ui ) {
}
任何建议吗?
在AJAX请求的success
函数中构建的结果对象将跨自动完成小部件的所有方法/事件处理程序使用。如果希望稍后访问某个属性,则必须在构建传递给response
函数的数据源时包含该属性:
success: function( data ) {
response( $.map( data.zipcodes, function( item) {
return {
label: item.realName + item.realName,
value: item.username,
realName: item.realName // include realName
}
}));
}
(来自评论):
也alert
函数返回null
,所以如果你想提醒只是值,使用:
alert(ui.item.realName)
。
我已经实现了自动完成下拉使用spring mvc。现在我的问题是,当任何用户选择/选择任何值从自动完成下拉,那么我怎么能确保所选的值是正确的或不?换句话说,我想确保用户是否从自动完成中选择了正确的值。因为用户可以在输入文本框中输入随机字符串并提交它(从技术上讲,我也确保当用户从下拉框中选择任何值时,然后提交将对用户可见,如果用户输入错误的数据,按钮不应该被激活)。
这是一个代码
<script>
$(function() {
$( "input[name='creditCheck']" ).autocomplete({
minLength: 2,
source:function( request, response ) {
$.ajax({
url: "creditCheck.ajax",
dataType: "json",
data: {
maxRows: 6,
startsWith: request.term
},
success: function( data ) {
response( $.map( data.creditCheckData, function( item) {
return {
creditName: item.creditName,
}
}));
}
});
},
上面的代码字很好,它从服务器获取列表并显示自动完成数据。在下面的代码中,我只是切换按钮。但我也确保当用户从下拉菜单中选择任何值时,提交将对用户可见,如果用户输入错误的数据,按钮不应该被激活。
$('input[name="creditCheck"]').bind("change keyup", function () {
if ($(this).val()!="") {
$(this).nextAll("button[name='add']:first").removeAttr('disabled');
} else {
$(this).nextAll("button[name='add']:first").attr('disabled', 'disabled');
}
});