自动完成 (Jquery) 焦点不绑定 Spring Propety



我正在使用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');
    }
});

最新更新