Doppelten Eintrag verhindern

brainsucker

Erfahrenes Mitglied
Hallo zusammen,

ich habe eine Namensauflistung in Form einer HTML <UL>

wird auf einen LI Eintrag ein Doppelklick ausgeführt wird der Name in eine nebensteheden Textarea eingetragen. Ich möchte aber verhindern dass ein User 2x den gleichen Namen in die Textarea einträgt. Hierzu habe ich mir ein, zwei Funktionen geschrieben die aber nicht ganz das erfülllen was ich mir erhofft hatte. Ich zeig Euch erstmal das bisherige Skript und schildere im Anschluss das Problem:

HTML:
<table>
	<tr>
    	
        <td>
        <ul><li ondblclick="putInto('testperson[1]')">testperson</li><li ondblclick="putInto('tester[2]')">tester</li><li ondblclick="putInto('edeltest[3]')">edeltest</li><li ondblclick="putInto('surfer[4]')">surfer</li><li ondblclick="putInto('klinsi[5]')">klinsi</li><li ondblclick="putInto('max[6]')">max</li><li ondblclick="putInto('mustermann[7]')">mustermann</li><li ondblclick="putInto('musterfrau[8]')">musterfrau</li></ul>        </td>
        <td>&nbsp; == &gt; &nbsp;</td>
        <td><textarea name="inhalt" rows="15" cols="40"></textarea></td>
    </tr>
</table>

Nun zu den JavaScript Funktionen:

HTML:
<script type="text/javascript">
	function putInto(variable)
		{
		var test = check(variable);
		if(test == true)
			{
			alert('Dieser Name ist bereits vorhanden');
			}
		else
			{
			document.formu.inhalt.value += variable+',\n';
			}
		}

function in_array(item,arr) 
	{
	for(p=0;p<arr.length;p++) if (item == arr[p]) return true;
	return false;
	}
		
function check(neu)
	{
	var checki = document.formu.inhalt.value;
	var clean = neu.replace(',','');
	var feld = checki.split(",");
	
	if(in_array(clean,feld)){return(true);}
	else{return(false);}	
	}
</script>

Der Erste Eintrag der in die Textarea kommt klappt ohne Probleme, auch alle anderen die danach kommen und eben noch nicht in der Textarea stehen. Komischerweise kapiert er es auch wenn ich den allerersten Eintrag nochmal einfügen will, dass dieser aber bereits drin ist. Versuche ich hingegen den zweiten Eintrag nochmals einzutragen scheitert die Prüfung und der Name wird fälschlicherweise wieder eingetragen :-(

Kann mir jemand bei der Lösung des Problems helfen?

Viele Grüße

Brainsucker
 
Jo,

Code:
<script type="text/javascript">
<!--
function putInto(obj)
{
  obj.ondblclick=function(){return false;}
  document.formu.inhalt.value += obj.firstChild.data+',\n';
}
//-->
</script>
<form name="formu">
<table>
	<tr>
    <td>
      <ul>
        <li ondblclick="putInto(this)">testperson</li>
        <li ondblclick="putInto(this)">tester</li>
        <li ondblclick="putInto(this)">edeltest</li></td>
        <td>&nbsp; == &gt; &nbsp;</td>
        <td><textarea name="inhalt" rows="15" cols="40"></textarea></td>
    </tr>
</table>
</form>
 
Hey cool, funktioniert soweit.

Frage hierzu: Kann man das auch so erweitern dass er eine Alert Warnung ausgibt wenn man versucht einen Namen in die Textbox zu schreiben der schon drin steht? Das wäre noch supi!

Vielen Dank aber schonmal!
 
Wenn ich zum zweiten mal auf einen Eintrag doppelklicke passiert ja nichts, da der wert schon in der textarea steht. Das "Nichts passieren" soll dem User aber durch eine alertBox visualisiert werden...
 
Ahso,

jo, kein Problem:

Ersetze dies:
Code:
obj.ondblclick=function(){return false;}

durch jenes
Code:
obj.ondblclick=function(){alert('"'+obj.firstChild.data+'\nwurde bereits ausgewählt');return false;}
 

Neue Beiträge

Zurück