Hi all!

I have two functions, one which calls the other (here simplified) that are part of an autocomplete process. The scripts run without error, however the part I am posting here returns "undefined" for one of my variables. The alert in the function findValue() returns the correct "thisID" in the alert, however the function fillCodes() that called it returns "undefined" in its alert:

function findValue(li) {
	if( !!li.extra ) var thisID = li.extra[0];
  alert(thisID);
  return thisID;
}

function fillCodes() {
  	var oSuggest = $("#my_input_field")[0].autocompleter;
	  var thisID = oSuggest.findValue();
	  alert(thisID);
}

Anybody have a clue?

Sandra

Recommended Answers

All 4 Replies

You're never passing an argument to the findValue function. findValue requires an argument but it is never receiving one.

You're never passing an argument to the findValue function. findValue requires an argument but it is never receiving one.

findValue() is finding and alerting the correct ID - it just does not return a value.

I just learned that the findValue() function (jQuery plugin for suggest) is asynchronous and needs the event handler onFindValue() to be defined.

But I dont know how to do this :icon_redface:


Sandra

Ok, clearly nobody knows how to define an event handler or use jQuery.

Since I don't know either, I have tried another approach.

First I created a hidden field with the name of "id_holder". I also have an input field where I want the returned value to be displayed named "id_target".

Then I changed my findValue() function to:

function findValue(li) {
	if( li == null ) return alert("No match!");
	if( !!li.extra ) var sValue = li.extra[0];
        document.my_form.id_holder.value = sValue;
}

Now my calling function is:

function fillCodes() {
    var oSuggest = $("#my_input_field")[0].autocompleter;
    oSuggest.findValue();
    var this_holder = eval("document.my_form.id_holder");
    var this_target = eval("document.my_form.id_target")
    alert(this_holder.value);
    alert(this_holder.value);
    this_target.value = this_holder.value	
    }

Now the curious thing is that the first alert is empty, while the second identical alert displays the correct id value. If the script does not contain at least one alert, then id_target remains empty.

Can anybody offer a solution as to how I can make this work without an alert? What is actually happening between the first and second alert?

If you are wondering why I don't put it all within the findValue() function, its because the final fillCodes() function will contain a loop to populate fields by sequence (the above code is simplified to make it easy to read).


Sandra

Ok... I solved this by first firing findValue() when the user selects from the Suggest drop menu, then it is fired a second time when fillCodes() is fired (when the user chooses to add their selection to a list).


Sandra

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.