2013-01-04 84 views
1

我正在使用Spring MVC自動完成(jQuery)。我做了所有事情,數據在自動完成中正常顯示,但屬性不顯示onfocus事件。每當我在onfocus方法中調用「ui.item.username」時,它總是顯示我空值。自動完成(jquery)焦點不綁定Spring Propety

$("#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方法屬性(在下面的方法),它顯示我空 焦點事件(jQuery的)

focus: function(event, ui) { 
    alert($(event.target).val(ui.item.ealName)); // it displays me null value at this point 
}, 
select: function(event, ui) { 
} 

什麼建議嗎?

+1

你是說ui.item.ealName是一個空值,或$(event.target).val(ui.item.ealName))是一個空值? val(value)在這種情況下是一個setter。它應該在警報中返回空值。嘗試簡化您的問題。這聽起來像是焦點方法中的錯誤。 –

回答

1

您在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) 

代替。

+0

成功:功能(數據){ \t \t \t \t響應($ .MAP(data.zipcodes,函數(項目){ \t \t \t \t \t回{ \t \t \t \t \t \t標籤:item.realName +項目。 realname, \t \t \t \t \t \t value:item。用戶名, \t \t \t \t \t \t真實姓名:item.realName \t \t \t \t \t} \t \t \t \t})); \t \t \t} \t \t \t \t \t \t}); \t \t}, \t \t焦點:功能(事件,UI){ \t \t \t警報($(event.target).VAL(ui.item.realName)); \t \t}, \t \t選擇:功能(事件,UI){ \t \t} – user1949334

+0

成功:功能(數據){ \t \t \t \t響應($ .MAP(data.zipcodes,函數(項目){ \t \t \t \t \t回{ \t \t \t \t \t \t標籤:item.realName + item.realName, \t \t \t \t \t \t值:item.username, \t \t \t \t \t \t真實姓名:item.realName \t \t \t \t \t} \t \t \t \t})); \t \t \t} \t \t \t \t \t \t}); \t \t}, \t \t焦點:功能(事件,UI){ \t \t \t警報($(event.target).VAL(ui.item.realName)); \t \t}, \t \t選擇:函數(事件,UI){ \t \t} – user1949334

+0

'使用這種方式時val'不返回任何東西。嘗試只是'alert(ui.item.realName);' –

0

我已經使用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, 
         } 
        })); 
       } 

       }); 
      }, 

上面的代碼字很好,它從服務器獲取列表,顯示自動完成data.In下面的代碼我只是撥動button.But我也確保當用戶從下拉列表中選擇任何值,然後提交將對用戶可見,並且如果用戶鍵入不正確的數據,則不應激活該按鈕。

$('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'); 
    } 
}); 
相關問題