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

相关问题