[JavaScript] Hilfe benötigt

csskoeln

Well-known member
ID: 10644
L
29 Mai 2006
130
4
Moin,

folgendes, durch ein JavaScript lasse ich einen Wert in ein Feld schreiben, in diesem fall ist es eine Kundennummer.

Wenn man jetzt allerdings mehr als einmal auf den Link klickt, dann wird auch der Wert, also die Kundennummer mehrfach ins Feld eingetragen.

Das Feld ist ein ganz normales Input Feld.
Frage: Wie müßte das Script aussehen, damit es die Kundennummer bei erneutem Klick löscht und die neue Kundennummer einträgt?

Für eine Anregung wäre ich dankbar.

Folgende JavaScripts nutze ich hierfür:

PHP:
function copykundenummer(wert)
{
	getActiveText();
	var Addwert = ""+wert+"";
	AddText(wert);
}


PHP:
function getActiveText(){
	setfocus();
	if ((is_ie && !document.selection) || !document.selection)
	{
		return false;
	}

	var sel = document.selection;
	var rng = sel.createRange();

	if (rng != null && (sel.type == "Text" || sel.type == "None"))
	{
		text = rng.text;
	}
	if (rng != null && theform.textout.createTextRange)
	{
		theform.textout.caretPos = rng.duplicate();
	}
	return true;
}


PHP:
function AddText(NewCode) {
	if (typeof(theform.textout.createTextRange) != "undefined" && theform.textout.caretPos)
	{
		var caretPos = theform.textout.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ''? NewCode +'' : NewCode;
		caretPos.select();
	}
	else if (theform.textout.selectionStart || theform.textout.selectionStart == '0')
	{ // its mozilla and we'll need to re-write entire text
		delete textout;
		var start_selection = theform.textout.selectionStart;
		var end_selection = theform.textout.selectionEnd;

		// fetch everything from start of text area to selection start
		var start = (theform.textout.value).substring(0, start_selection);
		// fetch everything from start of selection to end of selection
		var middle = NewCode;
		// fetch everything from end of selection to end of text area
		var end = (theform.textout.value).substring(end_selection, theform.textout.textLength);
		
		theform.textout.value = start + middle + end;
		setfocus();
		theform.textout.selectionStart = end_selection + middle.length;
		theform.textout.selectionEnd = start_selection + middle.length;
		getActiveText();
		AddTxt = "";
		return;
	}
	else
	{
		theform.textout.value += NewCode;
	}
	setfocus();
	getActiveText();
	AddTxt = "";
}

PHP:
function setfocus()
{
	theform.textout.focus();
}

Das ganze wird ins Formular (name="theform") in das Input-Feld
id="textout" "gespeichert.

Der Aufruf via Link sieht so aus:
PHP:
<a href="#" onclick="opener.copykundenummer('10000'); self.focus(); return false;">10120</a>

Hier wäre es auch schon, wenn ich es direkt aus einem Formular-Eelement (Drop-Down-Box) via anklicken übergeben könnte, statt als Link.

Falls jemand eine einfache Möglichkeit hat, bin ich auch hierfür dankbar, das Problem ist nur, das die Kundennummer, als der Wert aus einem POPUP Fenster kommt und dann ins Formular via Klick eingetragen werden soll, ohne das man es via Copy & Paste einfügen muß.

P.S.: Ist natürlich kein PHP-Code, aber mit der Funktion (PHP) und (/php) sieht es einfach übersichtlicher hier aus ;)
 
PHP:
//zeile: 21
theform.textout.value = start + middle + end;

//zeile: 31
theform.textout.value += NewCode;

warum machst du daraus nicht einfach

PHP:
//zeile: 21

theform.textout.value = middle;

//zeile: 31
theform.textout.value = NewCode;

damit überschreibst du den wert der in textout steht jedes mal mit der angeklickten kundennummer...

warum überhaupt son umständlicher code? o_O

Refizul
 
Moin,

PHP:
//zeile: 21
theform.textout.value = start + middle + end;

//zeile: 31
theform.textout.value += NewCode;

warum machst du daraus nicht einfach

PHP:
//zeile: 21

theform.textout.value = middle;

//zeile: 31
theform.textout.value = NewCode;

damit überschreibst du den wert der in textout steht jedes mal mit der angeklickten kundennummer...

warum überhaupt son umständlicher code? o_O

Refizul

Ihc habs so geändert, aber er überschreibt es nicht, sondern fügt es auch weiterhin so ein. :-?
 
Anstatt AddText(wert); aufzurufen machst du einfach
PHP:
FROMELEMENT.value = wert;

wobei FORMELEMENT hier zb "theform.textout" wäre.
 
Abend,

Anstatt AddText(wert); aufzurufen machst du einfach
PHP:
FROMELEMENT.value = wert;

wobei FORMELEMENT hier zb "theform.textout" wäre.

:arrow: SUPER!

Das geht schon mal :D

Aber wie kann ich jetzt in der SELECT BOX (DropDownbox SIZE = 10) es via Klick übernehmen lassen?

Ich hab es schon mit onklick="" probiert, bekomme es aber nicht hin :-(
 
hmm...

PHP:
<html>
<body>
<form name="testform">
Kundennummer:<br>
<input type="text" name="kundennummer">
<br>
<br>
Auswahl:<br>
<select name="kunden" onChange="kundennummer.value=kunden.value">
<option value="">Bitte wählen...</option>
<option value="123">test</option>
<option value="456">test2</option>
</select><br>
<input type="submit" value="Absenden">
</form>
</body>
</html>

funktioniert unter konqueror / firefox problemlos...
hoffe das meintest du so in etwa mit deiner selectbox.

Refizul
 
Moin, moin,

hmm...

PHP:
<html>
<body>
<form name="testform">
Kundennummer:<br>
<input type="text" name="kundennummer">
<br>
<br>
Auswahl:<br>
<select name="kunden" onChange="kundennummer.value=kunden.value">
<option value="">Bitte wählen...</option>
<option value="123">test</option>
<option value="456">test2</option>
</select><br>
<input type="submit" value="Absenden">
</form>
</body>
</html>

funktioniert unter konqueror / firefox problemlos...
hoffe das meintest du so in etwa mit deiner selectbox.

Refizul

Das Problem ist, das der Wert in einem POPUP Fenster ist und dann an ein anderes Formular übergeben werden muß, welches nicht mehr im POPUP-Fenster ist. Eigentlich sollte es ganz einfach sein, hmm.

Ich hab jetzt folgendes:
PHP:
<select size="10" name="kunde" onChange="opener.copykundenummer(\'+theform.kunde.value;+\'); self.focus(); return false;">

Problem ist nur, das er in dem anderen Formular folgendes einträgt:
+theform.kunde.value;+

hmm, jemand ne weitere Idee?
Soll halt alles ganz einfach sein, ohne das ich ständig die Kundennummer von Hand eintragen muß.
 
PHP:
<select size="10" name="kunde" onChange="opener.copykundenummer(\'+theform.kunde.value;+\'); self.focus(); return false;">

Problem ist nur, das er in dem anderen Formular folgendes einträgt:
+theform.kunde.value;+

:LOL: Na schau dir doch mal an was du da machst... wenn du was in ' ' setzt dann ist das ein String.

PHP:
opener.copykundenummer(theform.kunde.value);
 
hi,

:LOL: Na schau dir doch mal an was du da machst... wenn du was in ' ' setzt dann ist das ein String.

PHP:
opener.copykundenummer(theform.kunde.value);


JavaScript und Bäume vor den augen :mrgreen:

Ich hab es jetzt so, also ohne theform, da er mir sagt, das theform nicht definiert wäre:

PHP:
opener.copykundenummer(kunde.value);