javascript - Pass a parameter into Bloodhound from Typeahead? -


i setting form typeahead. have 2 input fields next each other, , need autocomplete on each of them. html looks this:

<select id="numerator">     <option value="presentation">presentation</option>     <option value="chemical">chemical</option> </select> <input id="numeratorid" class="typeahead" type="text" /> <br/> <select id="denominator">     <option value="presentation">presentation</option>     <option value="chemical">chemical</option> </select> <input id="denominatorid" class="typeahead" type="text" /> 

each of input fields autocomplete looking @ api endpoint. should of form /api/1.0/code?type=presentation&code=123 or /api/1.0/code?type=chemical&code=123.

the value of type parameter in api call should depend on value of <select> element next each input field.

the problem i'm having don't know how tell bloodhound type parameter should be.

ideally i'd pass in bloodhound, don't know how that. javascript:

var bnfmatches = new bloodhound({   datumtokenizer: bloodhound.tokenizers.obj.whitespace('value'),   querytokenizer: bloodhound.tokenizers.whitespace,   remote: {       url: '/api/1.0/code?',       replace: function(url, uriencodedquery) {         url = url + 'code=' + uriencodedquery;         // how change denominator denominator queries?         val = $('#numerator').val();          if (!val) return url;         return url + '&code_type=' + encodeuricomponent(val)       }   } });  $('.typeahead').typeahead({     hint: true,     highlight: true,     minlength: 2 }, {     name: 'states',     displaykey: 'id',     source: bnfmatches.ttadapter() }); 

i'd grateful suggestions.

try

html

note, removed duplicate id numeratorid @ input elements; substituted numeratorid , denominatorid , respectively. permits selecting select element within replace function.

<select id="numerator">     <option value="presentation">presentation</option>     <option value="chemical">chemical</option> </select> <input id="numeratorid" class="typeahead" type="text" /> <br/> <select id="denominator">     <option value="presentation">presentation</option>     <option value="chemical">chemical</option> </select> <input id="denominatorid" class="typeahead" type="text" /> 

js

note, bnfmatches not appear initialized. added bnfmatches.initialize(); after bloodhound settings.

var bnfmatches = new bloodhound({       datumtokenizer: bloodhound.tokenizers.obj.whitespace('value'),       querytokenizer: bloodhound.tokenizers.whitespace,       remote: {           url: '/api/1.0/code?',           replace: function(url, uriencodedquery) {             var val = $(".typeahead").filter(":focus")                      .attr("id").slice(0, -2);             var res = (url + "type=" + $("#" + val).val() + "&code="                        + encodeuricomponent(uriencodedquery));             console.log(res);             return res           }       }     });      bnfmatches.initialize();      $('.typeahead').typeahead({         hint: true,         highlight: true,         minlength: 2     },     {         name: 'states',         displaykey: 'id',         source: bnfmatches.ttadapter()     }); 

var bnfmatches = new bloodhound({    datumtokenizer: bloodhound.tokenizers.obj.whitespace('value'),    querytokenizer: bloodhound.tokenizers.whitespace,    remote: {        url: '/api/1.0/code?',        replace: function(url, uriencodedquery) {          var val = $(".typeahead").filter(":focus")                   .attr("id").slice(0, -2);          var res = (url                     + "type=" + $("#" + val).val() + "&code="                     + encodeuricomponent(uriencodedquery));          console.log(res);          return res        }    }  });    bnfmatches.initialize();    $('.typeahead').typeahead({      hint: true,      highlight: true,      minlength: 2  },  {      name: 'states',      displaykey: 'id',      source: bnfmatches.ttadapter()  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">  </script>  <script src="http://twitter.github.io/typeahead.js/releases/latest/typeahead.bundle.js"></script>    <select id="numerator">      <option value="presentation">presentation</option>      <option value="chemical">chemical</option>  </select>  <input id="numeratorid" class="typeahead" type="text" />  <br/>  <select id="denominator">      <option value="presentation">presentation</option>      <option value="chemical">chemical</option>  </select>  <input id="denominatorid" class="typeahead" type="text" />


Comments

Popular posts from this blog

css - SVG using textPath a symbol not rendering in Firefox -

Java 8 + Maven Javadoc plugin: Error fetching URL -

order - Notification for user in user account opencart -