» jQuery fieldSelection by Alex Brem v0.2.3 - last cange: 2006-12-20

bmi (Speedmanager) & Co. deaktivieren (als Webmaster)Neuen Thread eröffnenNeue Antwort erstellenJavaScript Countdown Mehrmals verwenden
AutorNachricht
Administrator 

Name: Marc
Geschlecht:
Anmeldedatum: 28.08.2004
Beiträge: 52420
Wohnort: Lohmar


Meine eBay-Auktionen:
14.11.2013, 21:26
zitieren

/*
 * jQuery plugin: fieldSelection - v0.2.3 - last cange: 2006-12-20
 * (c) 2006 Alex Brem <alex@0xab.cd> - /web/20070404164425/http://blog.0xab.cd
 */

(function() {

var rx_newline = /(\u000d\u000a|\u000a|\u000d|\u0085\u2028|\u2029)/gm;

var fieldSelection = {

getSelection: function() {

var e = (this.jquery) ? this[0] : this;

return (

/* mozilla / dom 3.0 */
('selectionStart' in e && function() {
var l = e.selectionEnd - e.selectionStart;

var range = { start: e.selectionStart, end: e.selectionEnd, length: l, text: e.value.substr(e.selectionStart, l) };

if (e.tagName.toLowerCase() == 'textarea') {
var col = range.row = 0;
e.value.substr(0, range.start).replace(rx_newline, function() { range.row++; col = arguments[2] });
range.col = (col) ? range.start - col - 1 : range.start;
}

return range;

}) ||

/* exploder */
(document.selection && function() {

e.focus();

var r = document.selection.createRange();
if (r === null) {
return { start: 0, end: 0, length: 0 }
}

var re = e.createTextRange();
var rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint('EndToStart', re);

var range = { start: rc.text.length, end: rc.text.length + r.text.length, length: r.text.length, text: r.text };

if (e.tagName.toLowerCase() == 'textarea') {
var col = row = 0;

e.value.substr(0, range.start).replace(rx_newline, function() { row++; col = arguments[2] });

range.row = row;
range.col = (col) ? range.start - col - 2 : range.start;

/*
see! this browser is stupid to such an extend. simply unbelievable.

we need a fix because of IE getting the newline-thing wrong.
IE counts \r\n  but they are under the cursor when the new line starts
and so we do not get an carent/key event for this character (WTF!?)

(update) hooray. I've hacked a solution.

(update2) argh! HOLY SHIT! this crap works only until the 2nd line break.
hey IE developers! no insulting, but did you code IE while you were on drugs?

conclusion: the CR/LF handling of textareas is completely fucked up!

try for yourself: disable the next code block, clear the textarea and
enter just some newlines.. then move the caret up and down and watch
the positions together with the hex dump.

to be continued... *sigh*
*/

var rl = rc.duplicate();
var bm = rc.getBookmark();
// is there a preceding CR
if (rl.findText("\r", 0, 536870912 + 131072)) { // \n is mysteriously undetectable!
// yes. now set range from found CR to selection/caret
rl.setEndPoint('EndToStart', re);
//console.log(rl.text.length);
if (rl.text == '') {
// hooray! we're at the beginning of a new column
// IE is stupid, so we have to zero col and inc row
// but strangely this only works after the first CR/LF
range.col = 0;
range.row++;
}

}

}

return range;

}) ||

/* browser not supported */
function() { return null }

)();

},

setSelection: function() {

var e = (this.jquery) ? this[0] : this;

var index = (arguments.length > 0) && ( // -1 means don't change index
( typeof arguments[0] == 'string') && (
((arguments[0] == ''  || arguments[0] == 'none'   ) && [   -1,    0]) // unselect all
|| ((arguments[0] == '*' || arguments[0] == 'all'    ) && [    0,   -1]) // select all
|| ((arguments[0] == '<' || arguments[0] == 'tostart') && [    0, null]) // select start to current
|| ((arguments[0] == '>' || arguments[0] == 'toend'  ) && [  null,   -1]) // select current to end
|| ((arguments[0] == '^' || arguments[0] == 'start'  ) && [    0,    0]) // cursor to start
|| ((arguments[0] == '$' || arguments[0] == 'end'    ) && [   null, -1]) // cursor to end
|| ((arguments[0] == '|' || arguments[0] == 'center' ) && [  '|',  '|']) // select word under cursor
) ||
( typeof arguments[0] == 'object') && (
(('start' in arguments[0] || 'end' in arguments[0]) && [arguments[0]['start'] || null, arguments[0]['end'] || null]) // json {start: n, end: n}
|| ('pos' in arguments[0] && [arguments[0]['pos'], arguments[0]['pos']] || null) // json {pos: n}
|| ((typeof arguments[0][0] != 'undefined' && typeof arguments[0][1] != 'undefined') && arguments[0]) // array [start, end]
) || ( arguments.length == 2) && [arguments[0], arguments[1]] // 2 parameters (start, end)
) || [null, null];

var named = { 'current': null, 'start': 0, 'end': -1 };
if (typeof index[0] == 'string') { index[0] = (index[0] in named) ? named[index[0]] : null }
if (typeof index[1] == 'string') { index[1] = (index[1] in named) ? named[index[1]] : null }

return (

/* mozilla / dom 3.0 */
('selectionStart' in e && function() {
e.focus();

// note: we could use setSelectionRange as a substitute
e.selectionStart = (index[0] === null) ? e.selectionStart : index[0];
e.selectionEnd = (index[1] === null) ? e.selectionEnd : ((index[1] == -1) ? e.value.length : index[1]);

return jQuery(e);
}) ||

/* exploder */
(document.selection && function() {
var range = jQuery(e).getSelection();
var start = (index[0] === null) ? range.start : index[0];
var end = (index[1] === null) ? range.end : ((index[1] == -1) ? e.value.length : index[1]);

var r = document.selection.createRange();
var re = e.createTextRange();
re.moveStart('character', (index[0] === null) ? range.start : index[0]);
re.moveEnd('character', (index[1] === null) ? -(e.value.length - range.end) : ((index[1] == -1) ? 0 : -(e.value.length - index[1])));
r.moveToBookmark(re.getBookmark());
r.select();

return jQuery(e);
}) ||

/* browser not supported */
function() { return jQuery(e) }

)();

},

replaceSelection: function() {

var e = (this.jquery) ? this[0] : this;
var text = arguments[0] || '';
var select_new = arguments[1] || false;

return (

/* mozilla / dom 3.0 */
('selectionStart' in e && function() {
e.focus();
var start = e.selectionStart;
e.value = e.value.substr(0, e.selectionStart) + text + e.value.substr(e.selectionEnd, e.value.length);
if (select_new) {
e.setSelectionRange(start, start + text.length);
}
return jQuery(e);
}) ||

/* exploder */
(document.selection && function() {
e.focus();
var r = document.selection.createRange();
r.text = text;
if (!select_new) { // to make IE behave nicely we must use reverse psychology ;)
r.collapse(false);
r.select();
}
return jQuery(e);
}) ||

/* browser not supported */
function() {
e.value += text;
return jQuery(e);
}

)();

}

};

jQuery.each(fieldSelection, function(i) { jQuery.fn[i] = this; });

})();

fieldSelection - a jQuery plugin

Copyright (c) 2006, Alex Brem
All rights reserved.

Redistribution and use of this software in source and binary forms, with or without modification, are
permitted provided that the following conditions are met:

* Redistributions of source code must retain the above
  copyright notice, this list of conditions and the
  following disclaimer.

* Redistributions in binary form must reproduce the above
  copyright notice, this list of conditions and the
  following disclaimer in the documentation and/or other
  materials provided with the distribution.

* Neither my name nor the names of its contributors may
  be used to endorse or promote products derived from
  this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

jquery-fieldselection.zip


zip

 Download

Dateigröße: 2,39KB
Heruntergeladen: 92 mal


pn email
Gast 
14.11.2013, 21:26
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "jQuery fieldSelection by Alex Brem v0.2.3 - last cange: 2006-12-20" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
jQuery in mediawiki 1.18 ?
Hallo Zusammen, kann mir jemand mit jQuery in mediawiki 1.18 weiterhelfen? Ich würde gerne einige Inhalte mit jquery anreichern, doch ich kann nirgendwo herausfinden, wie ich jQuery nutzen kann. jQuery wird zwar mitgeliefert, aber wie kann ich...
von wolkenkratzer
0
140
03.01.2012, 17:28
wolkenkratzer
Neue Bilderverkleinerung basierend auf jQuery
Die jQuery Javascript Bibliothek ermöglicht uns einfacher für die verschiedenen Browser Befehle auszugeben. Daher werden wir Zug um Zug auf jQuery umstellen und unseren Javascript Code anpassen. Falls es hier zu Fehlern kommt, bitte melden. Im ersten...
von mgutt
10
667
16.08.2012, 13:04
mgutt
Anwendungsentwickler (m/w/d) JavaScript, JQuery, HTML, CSS | Dussmann Stiftung & Co. KGaA
Bewerben Sie sich bis zum 08.05.2023. Jetzt bewerben! Zur Stellenanzeige auf Mein IT Job Ihre Bewerbung richten Sie bitte ausschließlich an die ausgeschriebene Firma. ________ Wir suchen zum nächst­möglichen Zeitpunkt einen Anwendungsentwickler...
[Jobs & Stellenangebote]von kimjob
0
127
14.03.2023, 15:49
kimjob
Programmierer gesucht: PHP, MySQL, Ajax, Java-Script, HTML5, CakePHP, jQuery, ExtJS
PHP-Programmierer, erfahren oder Anfänger mit Biß, in Vollzeit oder min. 20 Std/Woche für langjährige Zusammenarbeit gesucht. Wir arbeiten mit PHP, MySQL, Ajax, Java-Script, HTML5, Frameworks wie CakePHP, jQuery, ExtJS. Es geht dabei um die Betreuung,...
[Jobs & Stellenangebote]von OFS
0
209
10.01.2014, 09:34
OFS
Programmierer gesucht: PHP, MySQL, Ajax, Java-Script, HTML5, CakePHP, jQuery, ExtJS
PHP-Programmierer, erfahren oder Anfänger mit Biß, in Vollzeit oder min. 20 Std/Woche für langjährige Zusammenarbeit gesucht. Wir arbeiten mit PHP, MySQL, Ajax, Java-Script, HTML5, Frameworks wie CakePHP, jQuery, ExtJS. Es geht dabei um die Betreuung,...
[Jobs & Stellenangebote]von OFS
0
293
05.07.2013, 07:51
OFS
Alex´s eg2
Hallo leute, wollte euch mal meinen eg2 vorstellen, wie ich ihn gekauft habe, und wie er jetzt ist. heute gibts leider nur Bilder vom original zustand und ab morgen gehts dann...
von www-4ever
31
1.197
21.06.2011, 16:43
www-4ever
 Alex ihr ED6 !!
Ich kann ja nicht nur meinen Vorstellen sondern auch den meiner Frau (sonst gibt´s wieder Haue :laugh: ) Also, es handelt sich hier um einen ED6 den wir damals völlig ungepflegt aus Wolfsburg gekauft haben für 400 Euros !! Die Karosse war fast beulen...
von Iceghost
47
3.693
16.05.2010, 16:48
Woodstock242
alex ej 9
so.... möchte was über meine pläne plaudern... hab den civic seit april... absolut original gekauft... ( bilder kommen morgen... ) da ich ein schüler bin hab ich leider kaum kohle für´s auto... deswegen geht das tuning bißchen langsam...
von Electric
57
2.154
12.04.2007, 19:53
Electric
Hondaropa 2006 "Der Norden gibt Gas" 21.07-23.07.2006
Die Anmeldegebühr beträgt pro Person: bis zum 31. Mai 2006 Fr.- So. 55,- € Sa.- So. 50,- € bis zum 30. Juni 2006 Fr.- So. 60,- € Sa.- So. 55,- € Kinder ab 6 bis 14 Jahren zahlen die Hälfte. (Zelten inkl. / Hotel nicht im...
Ereignis beginnt am 20.07.2006, 22:00 für 3 Tagevon DjaneHonda
69
3.371
27.08.2006, 14:21
O.J. Civic
 Alex' EJ9: B16A2 eingetragen *yes*
Hallo zusammen, da ich schon seit einiger zeit hier im Forum unterwegs bin, möchte ich nun endlich auch meinen schönen EJ9 vorstellen. Der Wagen hat aktuell 112k Kilometer auf der Uhr. elektrische Fensterheber + Schiebedach Klima ...das wars auch schon...
von redEJ9
86
5.904
10.05.2014, 09:20
redEJ9
© 2004 - 2024 www.programmierer-forum.de | Communities | Impressum |