This repository has been archived by the owner on Oct 15, 2021. It is now read-only.
/
tx.jquery.bidi.js
51 lines (50 loc) · 1.83 KB
/
tx.jquery.bidi.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/* Regular expression to identify RTL chars */
UNICODE_RTL = /[\u0590-\u05FF\u0600-\u06FF\u0750-\u077F\uFB50-\uFDFF\uFE70-\uFEFF\u200F]/;
(function($){
/* Align textareas properly when loaded.
* Also detect content change in textarea
* on 'keyup' event and align textarea
* accordingly.
* Usage:
* $('textarea').bidi();
* or
* $('textarea').bidi({'css_class': 'foo'});
*/
$.fn.bidi = function(options) {
var settings = $.extend({
'css_class': 'rtl',
'parent_css_class': 'rtl_wrapper',
}, options);
var css_class = settings.css_class;
var parent_css_class = settings.parent_css_class;
this.each(function() {
var textarea = $(this);
var text = textarea.val();
if (text) {
if (UNICODE_RTL.test(text)) {
textarea.addClass(css_class);
textarea.parent().addClass(parent_css_class);
}
else{
textarea.removeClass(css_class);
textarea.parent().removeClass(parent_css_class);
}
}
textarea.bind('keyup', function(e){
/* Function to check for RTL content in textarea on some event
* and change the orientation of the textarea accordingly
*/
var textarea = $(this);
var text = textarea.val();
if (text && UNICODE_RTL.test(text)){
textarea.addClass(css_class);
textarea.parent().addClass(parent_css_class);
}
else{
textarea.removeClass(css_class);
textarea.parent().removeClass(parent_css_class);
}
});
});
};
})(jQuery);