|
Hi,
to get a key:
var key = obj_station.keywords[obj_station.selectedIndex];
to get a value:
var value = obj_station.values[obj_station.selectedIndex];
Hope it helps,
Dmitriy.
Listen up! "Teamwork" means staying out of my way! (Seifer, Final Fantasy 8).
|
|
|
|
|
Perfect! Thank you.
I also chose to modify it a bit. In case anyone wants to see, my code is below:
<input type='hidden' value="<% if toUpdate then %><%= rS1("StationID") %><% end if %>" name="reviewStation">
<input type='text' class="newField" style="align:left; width:245px;" value="" name="revStationShow">
<script>
var obj_station = new autosuggest("revStationShow", stations_array, null, function(index, control)
{
document.getElementById('reviewStation').value = control.values[index];
}
);
</script>
|
|
|
|
|
My implementation uses ajax to retrieve the results, BUT the data is hold in static client-side arrays:
After retrieving the results from database with Ajax, I create the array passing the result and using eval.
This way I can have dinamic list (ajax) of options (autosuggest) with no delay in searches (client-side).
I thought it might be useful to someone else.
|
|
|
|
|
So I have a listbox right below my textbox for which the suggestion is for. When I type something into the textbox the suggestion list comes up, but the very first entry is covered up by the listbox which is right underneath the textbox. Is there some setting to change the viewing of the different html elements? I want the suggestion list to go on top of the listbox.
Here's the code:
<div style="width:250px; float:left; padding-right:10px; ">
<input type='text' class="newField" onchange="document.getElementById('spe').value = obj_spe.values[0];" style="align:left; background:#ffffff; width:220px;" value="" name="speShow">
<script> var obj_spe = new autosuggest("speShow", names_array); </script>
<input type='hidden' value="<% if toUpdate then %><%= rS1("SpecProjEng") %><% end if %>" name="spe">
<% if toUpdate then
rS.Open "SELECT Name, FirstName FROM ReviewUsers WHERE UserID = " & rS1("SpecProjEng") rS.Close
end if
%>
<img src="images/admin.gif" id='butimg' style="cursor:pointer " onClick="window.open('masterUsers.asp?type=SPE', '', 'resizable=1,width=250,height=700,scrollbars=yes,menubar=0');" />
<div class="newFieldTitle"><span class="reqd">*</span><select name="CoordType">
<option value="SPE" <%=SPESelected%>>Option1</option>
<option value="SPC" <%=SPCSelected%>>Option2</option>
<option value="DC" <%=DCSelected%>>Option3</option>
</select>
</div>
</div>
Thanks in advance for your help.
|
|
|
|
|
Hi,
rightnow I don't have a quick solution for you - there is much to change for this to work. I'll try to work on this problem on the weekend.
- Dmitriy.
Listen up! "Teamwork" means staying out of my way! (Seifer, Final Fantasy 8).
|
|
|
|
|
Maybe use iframe instead:
If you have several input/combo boxes on a page, and encounter a situation when a suggestion list is rendered behind one of the other controls, you should change the use_IFrame variable to true. Otherwise, it is recommended to keep it false.
this.use_iframe = true; // should the control use an IFrame element to fix suggestion list positioning (MS IE only)?
Regards
|
|
|
|
|
Did it work (the iframe alternative)?
modified on Monday, June 1, 2009 4:53 PM
|
|
|
|
|
I think it's already set to true. I'll try setting it to false and see what happens. Sorry I didn't get time to try it out today. I will tomorrow. I was looking up on it and I may be able to use iFrames to solve my problem, will try tomorrow. I tried using the z-index for the html elements, but that didn't work. Will keep you updated. Thanks
|
|
|
|
|
|
Ok so setting it to false didn't change anything. I didn't get time to try and implement the iframe stuff, will hopefully get to that Monday.
|
|
|
|
|
Found the problem. It's actually a IE problem with any version less than IE 7. The select box covers any other element included in a DIV tag. So you have to implement a "fix" using an iframe to cover the select box and then put the dropdown suggestion textbox on top of that. This is the solution I'm using if anyone else encounters a problem:
http://www.fabien-molinet.fr/index.php?option=com_content&task=blogsection&id=8&Itemid=9
|
|
|
|
|
Nice. Thanks for the feedback.
As an additional and final suggestion, maybe you could change the order or distribution of the elements in the form, so the autosuggest would not overlap the other element(s) in IE6-.
Regards
modified on Tuesday, June 30, 2009 10:54 AM
|
|
|
|
|
Hi,
I am also facing the same issue.
Did you get any resolution?
Any help will be useful.
Thank,
Aasheesh
|
|
|
|
|
Sorry, I forgot to update this site with my findings. So in my case I just removed the listbox completely from the site and replaced it with check boxes. However, there is a fix built into Internet Explorer 7 or 8, can't remember what I read. If you can't upgrade or want to support older versions, look up IE listbox covered up fix or something along those lines in google. Some people have made up some small javascript patches and other little bits of code to help correct the situation. Basically, you'll need to apply some type of patch to get it to work, because IT IS a bug in Internet Explorer.
If you can't find anything, I'll try to find some of the articles I saw previously, otherwise happy hunting. Hope this helped.
|
|
|
|
|
I have about 700 names that need to be searched through in the array when typing into the textbox. When I limit the list to about 60 names, it works fine, but when I start adding more than 60 names, no list shows up. Do you have any idea what's causing this? I have a feeling it may have something to do with array length limitations, but please do let me know what you think. Thanks
|
|
|
|
|
Good evening,
there is no limit on the number of keywords you can use; I've tested the script with the subset of English Language dictionary (25.000+ terms) and it worked perfectly fine.
What can your problem be: do you see any errors in error console (try Firefox)? My guess is that you've introduced some minor JavaScript syntax error that prevents script from parsing.
Regards,
Dmitriy.
Listen up! "Teamwork" means staying out of my way! (Seifer, Final Fantasy 8).
|
|
|
|
|
If it works with 60, but no 700, my guess is there is some data with quotes.
Can you post the full 700-names list?
Regards!
|
|
|
|
|
You were right. Some of the names contained single quotes which was causing my string to escape. I used a blackslash escape character infront of any extra single quotes to fix the problem. Thanks everyone for your help.
|
|
|
|
|
|
Thank you for your code, it is nice.. I want to ask, how to showing all of the list when mouse clicked in the textbox?
thank's for the advice
|
|
|
|
|
Hi,
to do it, you need to add the following code to the end of setupEvents method:
var obj = this;
if(!this.displayed)
{
setTimeout(function()
{
obj.preSuggest(-1);
},
25);
}
Hope it helps,
Dmitriy.
Listen up! "Teamwork" means staying out of my way! (Seifer, Final Fantasy 8).
|
|
|
|
|
thank you for your's advice but it still not working when i click in the textbox
there are my code :
setupEvents: function()
{
this.addEvent(document, "keydown", this.funcCheck);
this.addEvent(this.field, "blur", this.funcClear);
this.addEvent(document, "keypress", this.funcPress);
var obj = this;
if(!this.displayed)
{
setTimeout(function()
{
obj.preSuggest(-1);
},
25);
}
},
|
|
|
|
|
Sorry for giving advice with untested code - it was very late :\
The following variant of setupEvents does work - tested it right now:
setupEvents: function()
{
this.addEvent(document, "keydown", this.funcCheck);
this.addEvent(this.field, "blur", this.funcClear);
this.addEvent(document, "keypress", this.funcPress);
if(!this.displayed)
{
var obj = this;
this.timer = setTimeout(function() { obj.preSuggest(-1); }, 25);
}
},
Listen up! "Teamwork" means staying out of my way! (Seifer, Final Fantasy 8).
|
|
|
|
|
thank you very much Dmitry, it is works
|
|
|
|
|
First, thanks for the great work.
I was using zichun script, but reading the comments I discovered yours, which addresses most of the issues I was trying to fix by myself. The script is working fine, with a few details:
1. Using this.use_scroll = true; in FF3 works OK, but in IE7, when mouse clicking on the scroll bar, the result list closes.
* Is there some simple fix?
2. In IE7, Start and End keys work both for setting the cursor to the beggining/end of the input and at the same time also for moving to the first/last row in the list.
In FF3, Start and End keys are only good for moving within the list, but not in the textbox.
* Is it possible to replicate IE behaviour in FF3 or at least have the same behaviour in both?
3. When resizing the page with open list, IE7 positions OK, but FF3 moves the list to some position other than under the textbox.
* Is it fixable?
Hint: this does not happens in zichun version Auto-complete Control[^]
4. Suggestion: add version number to the script, so people will know if some comment applies to their versions or not.
Best Regards!
PS: I already voted for the script
modified on Wednesday, May 13, 2009 10:22 AM
|
|
|
|
|