Link to home
Start Free TrialLog in
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
Avatar of sammySeltzer
sammySeltzer
Flag of United States of America image

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
Avatar of dkim18
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
Avatar of Julian Hansen
Julian Hansen
Flag of South Africa image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of 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.
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.
Avatar of dkim18

ASKER

I checked page source and they are the same. I see the javascript to bind the element and all the javascript libraries.
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?
Avatar of 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">
The only difference between those two is that the first has an extra class
ui-autocomplete-loading

Why is that?
Avatar of 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!
You are welcome - good luck with it.