Reply
Ajax dynamic list, show full textfield string value on save
Old 02-28-2007, 03:13 PM Ajax dynamic list, show full textfield string value on save
Extreme Talker

Posts: 190
Trades: 0
Hello fellow code junkies,

I am using the "Ajax dynamic list" http://dhtmlgoodies.com/index.html?w...x-dynamic-list and i think its the best out there. I have found a compatibility issue maybe one of you can help me out on.

In this html i use a text field to collect info. when a user types, *ajax_showOptions()* shows the option perfectly. once an item is selected and i move from the field, *makeRequest()*, my set variable to database php page is triggered and it saves to the database properly. my problem is that the value saved to the database is only the first few charaters *ajax_showOptions()* used to fill the dropdown. Example, if i type, *ce* the dropdown show *cesar*, i choose *cesar* and the database sets *ce*.

So my question is how do i get the database to set the full value in the textfield. How do i get *this.value* in makeRequest() to be the full value. Thanks.

Here is my html.

Code:
<input onkeyup="ajax_showOptions(this,'company_name',event)" type="text" id="company_name" name="company_name" value='' onblur="javascript:makeRequest('ajax_edit_company.php?valu=',this.value);">
The *ajax_showOptions()* script is unchanged from link above. Here is the *makeRequest()* script. This script is working great as is, besides possibly the current issue.
Code:
<script type="text/javascript" language="javascript">
   var http_request = false;
   function makeRequest(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
             // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      http_request.onreadystatechange = alertContents;
      http_request.open('GET', url + parameters, true);
      http_request.send(null);
   }

   function alertContents() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById('myspan').innerHTML = result;
         } else {
            alert('There was a problem with the request.');
         }
      }
   }

   function get(obj) {
      var getstr = "?";
      for (i=0; i<obj.childNodes.length; i++) {
         if (obj.childNodes[i].tagName == "INPUT") {
            if (obj.childNodes[i].type == "text") {
               getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
            }
            if (obj.childNodes[i].type == "checkbox") {
               if (obj.childNodes[i].checked) {
                  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
               } else {
                  getstr += obj.childNodes[i].name + "=&";
               }
            }
            if (obj.childNodes[i].type == "radio") {
               if (obj.childNodes[i].checked) {
                  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
               }
            }
         }
         if (obj.childNodes[i].tagName == "SELECT") {
            var sel = obj.childNodes[i];
            getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
         }

            if (obj.childNodes[i].type == "textarea") {
               getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
            }

      }
      makeRequest('get.php', getstr);
   }
</script>
empiresolutions is offline
Reply With Quote
View Public Profile
 
 
When You Register, These Ads Go Away!
Old 03-01-2007, 03:41 AM Re: Ajax dynamic list, show full textfield string value on save
Insensus's Avatar
Ultra Talker

Posts: 487
Name: Mark Stegeman
Location: Netherlands, Europe
Trades: 0
When the onBlur is triggered. The field hasn't yet been updated with what the user clicked on.
You could try to add a small timeout in the function.
Code:
onblur="javascript:setTimeOut("makeRequest('ajax_edit_company.php?valu=',this.value)",500);"
I think this will do the trick but I'm not sure of course.

Regards,
Insensus
Insensus is offline
Reply With Quote
View Public Profile
 
Old 03-01-2007, 02:06 PM Re: Ajax dynamic list, show full textfield string value on save
Extreme Talker

Posts: 190
Trades: 0
thanks. this idea was also suggested by another forum. thanks again.
empiresolutions is offline
Reply With Quote
View Public Profile
 
Reply     « Reply to Ajax dynamic list, show full textfield string value on save
 

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off





   
RSS Feed  Feeds: RSS   JS   XML
RSS Feed  Feeds for this forum: RSS   JS   XML

 


Page generated in 0.09182 seconds with 13 queries