Autovervollständigen

Registrierer

Erfahrenes Mitglied
Nachfolgendes Fertigscript möchte ich zur Weiterverarbeitung verwenden.

Die Ausgabe des Ergebnisses wird in das Feld "feld1" geschrieben. Wenn ich die Daten aus der DB hole, kann ich ja nur den Text anzeigen lassen der durchsucht werden soll.
Ich benötige aber auch z. B. die ID in einem verstecktem Feld zur Weiterverarbeitung wenn ich das Formular absende.
Ich finde hierfür keine Lösung um einen zweiten Parameter mitzugeben.

Die Ausgabe sieht dann so aus:
Array
(
[feld1] => Account
)

Wenn ich die ID anhänge, würde diese eben auch mit angezeigt, und das sollte nicht sein.
Array
(
[feld1] => Account#ID1
)

Weiß jemand einen Lösungsansatz?


HTML:
<script>

MS_ajax_select = function(searchopt, rows, data) {

	document.write('<div ');
	document.write('id="ajaxselectboxcon" ');
	document.write('style="');
	document.write('position:absolute;');
	document.write('left:0px;');
	document.write('top:0px;');
	document.write('visibility:hidden;');
	document.write('display:none;');
	document.write('">');
	document.write('<form name="ajaxform">');
	document.write('<select name="ajaxselectbox" size="'+rows+'">');
	document.write('</select>');
	document.write('</form>');
	document.write('</div>');

	document.data = data;
	document.searchopt = searchopt.toLowerCase();
};

MS_run_ajax_select = function(e) {

	if(typeof(document.body.scrollTop) == 'number' || window.opera) {

		if(window.event) {

			if(!event.x) {

				var px = event.clientX;
				var py = event.clientY;

			} else {

				if(event.clientY>event.screenY) {

					var px = document.body.scrollLeft+event.screenX-2;
					var py = document.body.scrollTop+event.screenY-138;

				} else {

					var px = document.body.scrollLeft+event.clientX;
					var py = document.body.scrollTop+event.clientY;
				}
			}

			var current = event.srcElement;

		} else {

			var px = document.body.scrollLeft+e.clientX;
			var py = document.body.scrollTop+e.clientY;

			var current = e.target;
		}

	} else {

		var px = window.pageXOffset+e.clientX;
		var py = window.pageYOffset+e.clientY;

		var current = e.target;
	}

	var obj = document.getElementById('ajaxselectboxcon');

	if(current.type == 'text' || current.type == 'textarea') {


		var sbox = document['ajaxform']['ajaxselectbox'];

		obj.data = document.data;
		obj.current = current;
		obj.sbox = sbox;
		obj.updatebox = function() {

			var tmp = [];

			for(var x in this.data[this.current.name]) {

				var currentvalue = this.current.value.toLowerCase();
				var currentdata = this.data[this.current.name][x];

				if(document.searchopt == 'first') {

					if(currentdata.toLowerCase().substr(0, currentvalue.length) == currentvalue) {

						tmp[tmp.length] = currentdata;
					}

				} else if(document.searchopt == 'full') {

					if(currentdata.toLowerCase().indexOf(currentvalue)>-1) {

						tmp[tmp.length] = currentdata;
					}
				}
			}

			if(tmp.length>0) {

				for(var x=this.sbox.options.length-1; x>=0; --x) {

					this.sbox.options[x] = null;
				}

				for(var x=0; x<tmp.length; ++x) {

					this.sbox.obj = this;
					this.sbox.field = this.current;
					this.sbox.options[x] = new Option(tmp[x], tmp[x]);

					this.sbox.onchange = function() {

						this.field.value = this.value;
						this.obj.style.visibility = 'hidden';
						this.obj.style.display = 'none';

						for(var x=this.options.length-1; x>=0; --x) {

							this.options[x] = null;
						}
					};
				}

			} else {

				this.style.visibility = 'hidden';
				this.style.display = 'none';
			}
		};

		current.obj = obj;
		current.onkeyup = function() {

			this.obj.style.visibility = 'visible';
			this.obj.style.display = 'block';

			this.obj.updatebox();
		}

		current.onclick = function() {

			this.obj.style.visibility = 'hidden';
			this.obj.style.display = 'none';
		};

		if(obj.sbox.options.length>0) {

			obj.style.visibility = 'visible';
			obj.style.display = 'block';

		} else {

			obj.style.visibility = 'hidden';
			obj.style.display = 'none';
		}

		obj.style.top = py;
		obj.style.left = px+40;

	} else {

		obj.style.visibility = 'hidden';
		obj.style.display = 'none';
	}
};

if(document.captureEvents) {

	document.captureEvents(Event.CLICK);
}

document.onclick = MS_run_ajax_select;

MS_ajax_select('FULL', 6, {'feld1':["Account","Acrobat","Azethon"]});

</script>

<form>
	<input type="text" name="feld1" size="40" />
</form>
 

Neue Beiträge

Zurück