/ Published in: JavaScript
usage : onkeypress="show_suggest(event,sender)" ajax.php should return a xml document with the value it found matching in the database. This value should be a substring containing only the letters following the letters that we are searching for.
Expand |
Embed | Plain Text
function dorequest(url,passOn){ var ajaxRequest; try{ // Opera 8.0+, Firefox, Safari ajaxRequest = new XMLHttpRequest(); } catch (e){ // Internet Explorer Browsers try{ ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){ // Something went wrong alert("Request failed"); return false; } } } // Create a function that will receive data sent from the server ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){ display(ajaxRequest.responseText,ajaxRequest.responseXML,passOn); } } ajaxRequest.open("GET",url , true); ajaxRequest.send(null); } function display(text, XML, sender){ var name = XML.getElementsByTagName("name")[0].childNodes[0].nodeValue; var pos = getCaretPosition(sender); sender.value = sender.value + name; setCaretPosition(sender,pos); setSelectionRange(sender,pos,String(sender.value).length); } } function setSelectionRange(textElem, selectionStart, selectionEnd) { if (textElem.setSelectionRange) { // FF textElem.setSelectionRange(selectionStart,selectionEnd); } else if (textElem.createTextRange) { // IE var range = textElem.createTextRange(); range.collapse(true); range.moveEnd('character', selectionEnd); range.moveStart('character', selectionStart); range.select(); } } function setCaretPosition(ctrl, pos){ if(ctrl.setSelectionRange){ ctrl.setSelectionRange(pos,pos); } else if (ctrl.createTextRange) { var range = ctrl.createTextRange(); range.collapse(true); range.moveEnd('character', pos); range.moveStart('character', pos); range.select(); } } function getCaretPosition (ctrl) { var CaretPos = 0; if (document.selection) { ctrl.focus (); var Sel = document.selection.createRange (); Sel.moveStart ('character', -ctrl.value.length); CaretPos = Sel.text.length; } else if (ctrl.selectionStart || ctrl.selectionStart == '0') CaretPos = ctrl.selectionStart; return (CaretPos); } function show_suggest(e,sender){ var code; if (!e) var e = window.event; if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which; if (code >= 48 && code <= 90){ var url = "ajax.php?letters="+sender.value; dorequest(url,sender); } }
You need to login to post a comment.
