1

我正在使用typeahead來提取名稱,然後使用相應名稱的id更新隱藏字段。在我的表格中,名稱可以留空,填寫並不是必需的。將自定義函數添加到引導程序typeahead

有沒有辦法將自定義錯誤檢查添加到typeahead函數?例如,我開始填寫表單並鍵入/選擇一個用戶,然後我改變了主意並想讓它保持空白。到此爲止,用戶標識已經添加到隱藏字段中,因此即使我將名稱字段留空,表單也會與其中的用戶標識一起傳遞。

我想我總是可以在提交時進行錯誤檢查,但是好奇的是,如果有方法添加到本機api。

我的代碼是:

$('#name_field').typeahead({ 
     minLength: 3, 
     source: function (query, process){ 

      $.get('/url/getsource', {query: query}, function (data) {     
       names = []; 
       map = {}; 
       $.each(data, function (i, name) { 
        map[name.uName] = name; 
        names.push(name.uName); 
       }); 
       process(names);     
      });    
     }, 
     matcher: function (item) { 
      if (item.toLowerCase().indexOf(this.query.trim().toLowerCase()) != -1) { 
       return true; 
      } 
     }, 
     sorter: function (items) { 
      return items.sort(); 
     }, 
     highlighter: function (item) { 
      var regex = new RegExp('(' + this.query + ')', 'gi'); 
      return item.replace(regex, "<strong>$1</strong>"); 
     }, 
     updater: function (item) { 
      selectedID = map[item].id;    

      $('#id_field').val(selectedID); 
      return item; 
     } 

    }); 

我希望我可以添加類似

$('#name_field').typeahead({ 
    myCustom: function(){ 
     if($('#name_field').val() == ''){ 
      $('#id_field').val(''); 
    }, 
    rest, 
    of the, 
    function 
}); 

回答

1

你可以一個函數綁定到用戶現場的模糊事件。因此,只要用戶對其他表單元素進行了任何更改(如果它留空),就可以清除鍵入區域。

$('#user-field').blur(function (e) { 
    if(this.val() === ''){ 
     $('#typeahead-field').val(''); // Clear typeahead 
    } 
}); 
+0

並使該功能獨立於.typehead()? – Mike

+0

是的,你將不得不因爲沒有辦法使用獨立的API來做到這一點 – greenimpala

+0

是否有任何意義將它鏈接到.typeahead(之前或之後)或只是保持它完全獨立? – Mike

相關問題