root / cloudcms / static / cloudcms / js / forms.js @ 4b5adcc3
History | View | Annotate | Download (2.9 kB)
1 | c6fdba44 | Olga Brani | (function($){ |
---|---|---|---|
2 | c6fdba44 | Olga Brani | |
3 | c6fdba44 | Olga Brani | $.fn.formCheckBoxes = function(options) { |
4 | c6fdba44 | Olga Brani | |
5 | c6fdba44 | Olga Brani | return this.each(function() { |
6 | 4b5adcc3 | Olga Brani | // process checkboxes
|
7 | c6fdba44 | Olga Brani | var $this = $(this); |
8 | 4b5adcc3 | Olga Brani | var el = $('<a class="checkbox-widget" href="javascript:void(0)"/>'); |
9 | 4b5adcc3 | Olga Brani | var form = $this.closest(".form-row"); |
10 | 4b5adcc3 | Olga Brani | |
11 | 4b5adcc3 | Olga Brani | // add class to identify form rows which contain a checkbox
|
12 | 4b5adcc3 | Olga Brani | form.addClass("with-checkbox");
|
13 | 4b5adcc3 | Olga Brani | |
14 | 4b5adcc3 | Olga Brani | if ($this.prev().length > 0) { |
15 | 4b5adcc3 | Olga Brani | var lbl = $this.prev()[0]; |
16 | 4b5adcc3 | Olga Brani | if (lbl.nodeName == "LABEL" || lbl.nodeName == "label") { |
17 | 4b5adcc3 | Olga Brani | $(lbl).addClass("checkbox-label"); |
18 | 4b5adcc3 | Olga Brani | |
19 | 4b5adcc3 | Olga Brani | $(lbl).click(function(e){ |
20 | 4b5adcc3 | Olga Brani | var src = e.srcElement.nodeName;
|
21 | 4b5adcc3 | Olga Brani | if (src == "LABEL" || src == "label") { |
22 | 4b5adcc3 | Olga Brani | el.toggleClass("checked");
|
23 | 4b5adcc3 | Olga Brani | }; |
24 | 4b5adcc3 | Olga Brani | }) |
25 | 4b5adcc3 | Olga Brani | } |
26 | 4b5adcc3 | Olga Brani | } |
27 | c6fdba44 | Olga Brani | $this.hide();
|
28 | c6fdba44 | Olga Brani | |
29 | 4b5adcc3 | Olga Brani | if ($this.attr('checked')) { |
30 | c6fdba44 | Olga Brani | el.addClass("checked");
|
31 | c6fdba44 | Olga Brani | } |
32 | c6fdba44 | Olga Brani | |
33 | c6fdba44 | Olga Brani | el.click(function() {
|
34 | c6fdba44 | Olga Brani | el.toggleClass("checked");
|
35 | c6fdba44 | Olga Brani | $this.attr('checked', el.hasClass("checked")); |
36 | 4b5adcc3 | Olga Brani | }); |
37 | 4b5adcc3 | Olga Brani | |
38 | 4b5adcc3 | Olga Brani | el.keypress(function(e){
|
39 | 4b5adcc3 | Olga Brani | |
40 | 4b5adcc3 | Olga Brani | if (e.keyCode == 0 || e.keyCode == 32){ |
41 | 4b5adcc3 | Olga Brani | e.preventDefault(); |
42 | 4b5adcc3 | Olga Brani | el.toggleClass("checked");
|
43 | 4b5adcc3 | Olga Brani | $this.attr('checked', el.hasClass("checked")); |
44 | 4b5adcc3 | Olga Brani | } |
45 | c6fdba44 | Olga Brani | }) |
46 | c6fdba44 | Olga Brani | |
47 | 4b5adcc3 | Olga Brani | $this.prev('label').before(el); |
48 | c6fdba44 | Olga Brani | }); |
49 | c6fdba44 | Olga Brani | |
50 | c6fdba44 | Olga Brani | |
51 | c6fdba44 | Olga Brani | } |
52 | c6fdba44 | Olga Brani | |
53 | c6fdba44 | Olga Brani | $.fn.formErrors = function(options) { |
54 | c6fdba44 | Olga Brani | return this.each(function() { |
55 | c6fdba44 | Olga Brani | var $this = $(this); |
56 | c6fdba44 | Olga Brani | |
57 | c6fdba44 | Olga Brani | // does the field has any errors ?
|
58 | c6fdba44 | Olga Brani | var errors = $this.find(".errorlist"); |
59 | c6fdba44 | Olga Brani | if (errors.length == 0) { |
60 | c6fdba44 | Olga Brani | return;
|
61 | c6fdba44 | Olga Brani | } |
62 | c6fdba44 | Olga Brani | |
63 | c6fdba44 | Olga Brani | // create the custom error message block
|
64 | c6fdba44 | Olga Brani | // and copy the contents of the original
|
65 | c6fdba44 | Olga Brani | // error list
|
66 | c6fdba44 | Olga Brani | var el = $('<div class="form-error" />'); |
67 | c6fdba44 | Olga Brani | errors.find("li").each(function(){ |
68 | c6fdba44 | Olga Brani | el.html(el.html() + $(this).text() + "<br />"); |
69 | c6fdba44 | Olga Brani | }) |
70 | c6fdba44 | Olga Brani | |
71 | c6fdba44 | Olga Brani | var formel = $this.find("input, select"); |
72 | c6fdba44 | Olga Brani | var lbl = $this.find("label"); |
73 | c6fdba44 | Olga Brani | var form = $this.closest("form"); |
74 | c6fdba44 | Olga Brani | |
75 | c6fdba44 | Olga Brani | |
76 | c6fdba44 | Olga Brani | // append element on form row
|
77 | c6fdba44 | Olga Brani | // and apply the appropriate styles
|
78 | c6fdba44 | Olga Brani | formel.closest(".form-row").append(el);
|
79 | c6fdba44 | Olga Brani | errors.remove(); |
80 | c6fdba44 | Olga Brani | var left = formel.width();
|
81 | c6fdba44 | Olga Brani | var top = formel.height();
|
82 | c6fdba44 | Olga Brani | var marginleft = lbl.width();
|
83 | c6fdba44 | Olga Brani | |
84 | c6fdba44 | Olga Brani | // identify the position
|
85 | c6fdba44 | Olga Brani | // forms with innerlbales class
|
86 | c6fdba44 | Olga Brani | // display the label within the input fields
|
87 | c6fdba44 | Olga Brani | if ($(form).hasClass("innerlabels")) { |
88 | c6fdba44 | Olga Brani | marginleft = 0;
|
89 | c6fdba44 | Olga Brani | } |
90 | c6fdba44 | Olga Brani | |
91 | c6fdba44 | Olga Brani | var styles = {
|
92 | c6fdba44 | Olga Brani | left: left + "px", |
93 | c6fdba44 | Olga Brani | top: top + "px", |
94 | c6fdba44 | Olga Brani | width: formel.outerWidth() - 10, |
95 | c6fdba44 | Olga Brani | marginLeft: marginleft,
|
96 | c6fdba44 | Olga Brani | marginBottom: 5 |
97 | c6fdba44 | Olga Brani | } |
98 | 4b5adcc3 | Olga Brani | |
99 | 4b5adcc3 | Olga Brani | if (formel.attr("type") != "checkbox") { |
100 | 4b5adcc3 | Olga Brani | el.css(styles); |
101 | 4b5adcc3 | Olga Brani | } else {
|
102 | 4b5adcc3 | Olga Brani | el.css("margin-top", "5px"); |
103 | 4b5adcc3 | Olga Brani | } |
104 | c6fdba44 | Olga Brani | }); |
105 | c6fdba44 | Olga Brani | |
106 | c6fdba44 | Olga Brani | }; |
107 | 4b5adcc3 | Olga Brani | })( jQuery ); |