Zurück   Flashforum > Alternative Technologien > JavaScript & jQuery

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-09-2008, 14:24   #1 (permalink)
Wetmaster
 
Benutzerbild von Nicmare
 
Registriert seit: Aug 2001
Ort: BERLIN
Beiträge: 3.075
Smilies an Cursor einfügen

Habe mir im Netz ein Snippet rausgesucht um damit Smilies in eine Textarea einzufügen. Und zwar beim Mauscursor.
Ich benutzte dafür Jquery und Jsmile. Jsmile generiert zB aus :lol: clientseitig eine Smiliegrafik.

hier die Funktion:
HTML-Code:
jQuery.fn.insertAtCursor = function(myValue) {
			//IE support
			var myField = $("textarea");
			if (document.selection) {
			myField.focus();
			sel = document.selection.createRange();
			sel.text = myValue;
			}
			//MOZILLA/NETSCAPE support
			else if (myField.selectionStart || myField.selectionStart == '0') {	
				var startPos = myField.selectionStart;
				var endPos = myField.selectionEnd;
				myField.value = myField.value.substring(0, startPos)
				+ myValue
				+ myField.value.substring(endPos, myField.value.length);
			} else {
			myField.value += myValue;
			}
		}
und hier rufe ich die Funktion auf:
HTML-Code:
$(document.body).smile().find(".smilies img").css("cursor","pointer").click(function(){
			var smiletext = $(this).attr("alt");
			$("textarea").insertAtCursor(smiletext);
		});
});
Das ganze funktioniert im IE und Opera super. Aber im Safari und im FF passiert rein garnichts. Kriege auch kein JS Error.

jetzt habe ich bei selfhtml auch noch ein Snippet gefunden. Das geht wieder im IE und Opera aber bei FF kriege ich "input.value is undefined":
HTML-Code:
jQuery.fn.insertAtCursor = function(aTag) {
  var input = $("textarea");
  input.focus();
  /* für Internet Explorer */
  if(typeof document.selection != 'undefined') {
    /* Einfügen des Formatierungscodes */
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = insText + aTag;
    
    range.select();
  }
  /* für neuere auf Gecko basierende Browser */
  else if(typeof input.selectionStart != 'undefined')
  {
    /* Einfügen des Formatierungscodes */
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + insText + aTag + input.value.substr(end);
    input.selectionStart = pos;
    input.selectionEnd = pos;
  }
  /* für die übrigen Browser */
  else
  {
    /* Abfrage der Einfügeposition */
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos)) {
      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length) {
      pos = input.value.length;
    }
    /* Einfügen des Formatierungscodes */
    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
    input.value = input.value.substr(0, pos) + insText + aTag + input.value.substr(pos);
  }
}
wo steckt der wurm?

Geändert von Nicmare (16-09-2008 um 14:40 Uhr)
Nicmare ist offline   Mit Zitat antworten
Alt 16-09-2008, 14:36   #2 (permalink)
Wetmaster
 
Benutzerbild von Nicmare
 
Registriert seit: Aug 2001
Ort: BERLIN
Beiträge: 3.075
hier noch die drei files zum testen. ich meine dass es an diesem jsmile liegt.
Angehängte Dateien
Dateityp: zip jSmile.zip (24,8 KB, 10x aufgerufen)
Nicmare ist offline   Mit Zitat antworten
Alt 16-09-2008, 15:05   #3 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Könnte helfen:

http://laboratorium.0xab.cd/jquery/f....1.0/test.html
http://laboratorium.0xab.cd/jquery/f...ldselection.js
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 16-09-2008, 22:14   #4 (permalink)
Wetmaster
 
Benutzerbild von Nicmare
 
Registriert seit: Aug 2001
Ort: BERLIN
Beiträge: 3.075
hey. interessantes script. aber tut das not? ich mein ich habe das gefühl dass ich nur ne kleinigkeit übersehe. und bevor ich da irgendein plugin nehme, würde ich(wir) dem mysterium gerne auf den grund gehen und die ursache finden
Nicmare ist offline   Mit Zitat antworten
Alt 16-09-2008, 23:23   #5 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Da hilft wohl nur mühsames schritt-für-schritt debuggen....
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 17-09-2008, 09:15   #6 (permalink)
Wetmaster
 
Benutzerbild von Nicmare
 
Registriert seit: Aug 2001
Ort: BERLIN
Beiträge: 3.075
wie ich es mir gedacht hab lag das problem in der jquery function.
statt
$("textarea").insertAtCursor(smiletext);
muss es einfach nur
insertAtCursor(smiletext);
heißen.
dooooooh............
danke nighty für die hilfreichen tipps!!
Nicmare ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:16 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele