2013-12-10 162 views
1

我有一個文本輸入字段設置爲自動完成爲用戶使用ajax/php。雖然用戶可以輸入任何條目,但我想警告用戶,如果他們嘗試輸入一個不存在的值。jquery驗證引擎 - 驗證json列表

<input type="text" id="customerName" size="50" class="validate[required]" /> 
<input type="hidden" id="customerid"/> 

現在我有完整的針對該領域中的汽車:

$("#customerName").autocomplete({ 
    source: function (request,response) { 
     $.ajax({ 
      url: 'getData.php?f=c&s=112', 
      dataType: 'json', 
      data: { 
       term: request.term, 
       country: $("#country").val() 
      }, 
      success: function (data) { 
       response(data) 
      } 
     }) 
    }, 
    minLength: 2, 
    delay: 0, 
    dataType: 'json', 
    select: function(event, ui) { 
     $("#customerid").val(ui.item.id); 
    } 
}); 

我試着用模糊(),但它熄滅太多的情況下,所以我想我會附加到驗證引擎的掛鉤並檢查哪些字段正在測試,因此我可以通過測試customerid是否爲空來測試用戶是否輸入了新內容。

form.bind('jqv.field.result', function(event, field, errorFound, promptText) { 
    console.log('event = ' + event.toSource()); 
    console.log('field = ' + field.toSource()); 
    console.log('errorFound = ' + errorFound); 
    console.log('promptText = ' + promptText); 

我似乎無法弄清楚如何測試字段參數,看看我是否在正確的空間。

如果你可以想到一個更簡單/不同的方法隨時張貼,這只是我最初的想法。

+0

需要用引號'$(「#customerid」)。val(ui.item.id);' –

+0

這只是一個錯字,我沒有剪切粘貼。 – awm

回答

0

我想我只是需要一個良好的睡眠。這是一個非常簡單的解決方案:

form.bind('jqv.field.result', function(event, field, errorFound, promptText) { 
    if (!errorFound) 
     if (field.attr('name') === .... 

如果出現錯誤,讓普通線程繼續,因爲存在本地錯誤。否則,我們可以檢查名稱字段,看看它是否是我們想要觸發的字段,然後執行。