Avatar of dkim18
dkim18
 asked on

Form submission and jQuery autocomplete

Hi Experts,

I have created a jQuery autocomplete for certain page and it worked fine if I reach the page from a link in previous page.
However, if I reach the page with autocomplete text field from form submit, the autocomplete doesn't work.

I will show example in the following:

This is autocomplete part:
<script type="text/javascript">
	
	$(document).ready(function() {
    $(function() {        	
    	
        $("#diagtags").autocomplete({
        	minLength: 3, //at leat 3 char required        	
            source: function (request, response) {
                $.getJSON("AutoCompleteController", {
                    term: request.term
                }, response);
            }          
        });              
    });
	});
</script>
...
...
...
 <input type="text" name="test" id="diagtags" >

Open in new window


=========================
If I go the automplete page from this link, it works ok.
<a href="/xxx/abcEdit.do?method=edit">Add New</a>

===================================
however, if I reach the autocomplete page from form submission, the autocomplete text field doesn't display anything when I type in something(more than 3 characters.)
<form name="AbcForm" method="post" action="/xxx/xxx/cde.do" >  
	<input type="submit" name="method" value="Add">			
</form>

Open in new window



What is that and what is the solution for this?

Thanks in advance
jQueryJavaScriptHTML

Avatar of undefined
Last Comment
Julian Hansen

8/22/2022 - Mon
sammySeltzer

Just out of curiosity, can rename method to something else?

Method could be a reserved word.

So perhaps something like:

   
  <input type="submit" name="someName" value="Add"> 

Open in new window

 

Also, even though this works according to you:

<a href="/xxx/abcEdit.do?method=edit">Add New</a>

Open in new window

, I will replace method with mode.

Mode = edit or add or delete, etc
dkim18

ASKER
This is Struts framework (J2ee) and there is a reason that name is method; otherwise, I get a java.lang.NoSuchMethodException error.
ASKER CERTIFIED SOLUTION
Julian Hansen

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
dkim18

ASKER
Do you get any errors in your console (or any output in the console) when you arrive at the page with a form submit?
--> No, I don't get any error in my console.

Is your form submit using AJAX ? If so then it might be a case of static binding causing your problem.
--> No. It is simple Struts actionform submit.

If element diagtags is being created dynamically you will have to bind the autocomplete handler to the element after the content has been loaded.
-->No, element diagtags is hardcoded.

First step though is to look at your console output for errors.

Posting a link would also help ...
--> Sorry, this is an intranet site.
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes
Julian Hansen

Then what is different between accessing the site by URL and posting to the page?

Something must be different?

If you view your page source are you seeing the javascript to bind your element to the autocomplete?
Are you seeing your javascript libraries and can you click through to those.
dkim18

ASKER
I checked page source and they are the same. I see the javascript to bind the element and all the javascript libraries.
Julian Hansen

I checked page source and they are the same.
Then if they are the same the code will work.
Without having access to the page to see what is going on we have to use your eyes to diagnose.

From what you are telling us the pages are identical and there are no errors.

That is insufficient information to be able to make a diagnosis. Is it not possible to post the generated HTML from the two situations?
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
dkim18

ASKER
I found there are differences:

this is from not working page:
<input aria-haspopup="true" aria-autocomplete="list" role="textbox" autocomplete="off" class="ui-autocomplete-input ui-autocomplete-loading" name="diagnosisDescription" maxlength="100" size="100" value="Search for diagnosis term or number..." onclick="value=''; style.color='#000000';" style="width: 630px; height: 18px; color: rgb(0, 0, 0);" id="diagtags" title="Text will be deleted when clicking in field" type="text">

this is from working page:
<input aria-haspopup="true" aria-autocomplete="list" role="textbox" autocomplete="off" class="ui-autocomplete-input" name="diagnosisDescription" maxlength="100" size="100" value="Search for diagnosis term or number..." onclick="value=''; style.color='#000000';" style="width: 630px; height: 18px; color: rgb(0, 0, 0);" id="diagtags" title="Text will be deleted when clicking in field" type="text">
Julian Hansen

The only difference between those two is that the first has an extra class
ui-autocomplete-loading

Why is that?
dkim18

ASKER
I think I found the issue. Actually the two URL wasn't the same. Struts action mapping always keeps the first url no matter what. I will probably ask another question more specific to this. Thanks anyway!
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
Julian Hansen

You are welcome - good luck with it.