Update of /var/cvs/html/mmbase/validation
In directory james.mmbase.org:/tmp/cvs-serv31360
Modified Files:
Widgets.js
Log Message:
adapted 'twoMultiples' for use in a certain product from Redmond, WA. Still
doesn't work 100% in it, but that simply is impossible to accomplish for mere
mortals
See also: http://cvs.mmbase.org/viewcvs/html/mmbase/validation
Index: Widgets.js
===================================================================
RCS file: /var/cvs/html/mmbase/validation/Widgets.js,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- Widgets.js 10 Dec 2008 09:54:59 -0000 1.5
+++ Widgets.js 10 Dec 2008 11:28:01 -0000 1.6
@@ -9,7 +9,7 @@
* - Widgets.instance.boxes(selector): Makes select into a list of
checkboxes (multiple) or radioboxes (single)
* - Widgets.instance.twoMultiples(selector): Splits up multiple selection
into 2 boxes, the left one containing the selected values, the right one the
optiosn which are not selected.
*
- * @version $Id: Widgets.js,v 1.5 2008/12/10 09:54:59 michiel Exp $ BETA
+ * @version $Id: Widgets.js,v 1.6 2008/12/10 11:28:01 michiel Exp $ BETA
* @author Michiel Meeuwissen
*/
@@ -207,11 +207,8 @@
});
};
-/**
- * Sets up the dbl-click event on option to move it from a to b.
- */
-Widgets.prototype.aToB = function(option, a, b) {
- $(option).dblclick(function() {
+
+Widgets.prototype.moveFromAToB = function(option, a, b) {
var options = b[0].options;
var appended = false;
for(var i = 0; i < options.length; i++) {
@@ -226,52 +223,71 @@
b.append(option);
}
Widgets.prototype.aToB(option, b, a);
+}
+
+/**
+ * Sets up the dbl-click event on option to move it from a to b.
+ */
+Widgets.prototype.aToB = function(option, a, b) {
+ // IE simply does not properly support events on options.
+ // I can't be bothered any more. Double clicking on the options will only
work in decent browsers.
+
+ // I HATE MICROSOFT INTERNET EXPLORER
+
+ $(option).dblclick(function(ev) {
+ Widgets.prototype.moveFromAToB(option, a, b);
});
}
Widgets.prototype.twoMultiples = function(selector) {
$(document).ready(function() {
$(selector).each(function() {
+ var select = this;
var t = $(this);
var text = $("<div class='mm_twomultiples'></div>");
var left = $("<select multiple='multiple' />");
left.attr("name", t.attr("name"));
left.attr("id", t.attr("id"));
t.parents("form").submit(function() {
- $(left[0].options).each(function() {
- this.selected = true;
- });
+ for (var i = 0; i < left[0].options.length; i++) {
+ left[0].options[i].selected = true;
+ }
});
var right = $("<select multiple='multiple' />");
- $(this.options).each(function() {
- this.originalPosition = this.index;
- });
- $(this.options).each(function() {
- if (this.value == null || this.value == '') {
- } else if (this.selected) {
- left.append(this);
- Widgets.prototype.aToB(this, left, right);
+ for (var i = 0; i < select.options.length; i++) {
+ var option = select.options[i];
+ option.originalPosition = option.index;
+ }
+ for (var i = 0; i < select.options.length; i++) {
+ var option = select.options[i];
+
+ if (option.value == null || option.value == '') {
+ } else if (option.selected) {
+ left.append(option);
+ Widgets.prototype.aToB(option, left, right);
} else {
- right.append(this);
- Widgets.prototype.aToB(this, right, left);
+ right.append(option)[0];
+ Widgets.prototype.aToB(option, right, left);
+ }
}
- });
var nobr = $("<nobr />");
var buttonToLeft = $("<input type='button' value=' < ' />")
buttonToLeft.click(function() {
- $(right[0].options).each(function() {
- if (this.selected) {
- $(this).dblclick();
+ for (var i = 0; i < right[0].options.length; i++) {
+ var o = right[0].options[i];
+ if (o.selected) {
+ Widgets.prototype.moveFromAToB(o, right, left);
+ }
}
- });
});
var buttonToRight = $("<input type='button' value=' > ' />")
buttonToRight.click(function() {
- $(left[0].options).each(function() {
- if (this.selected) {
- $(this).dblclick();
+ for (var i = 0; i < left[0].options.length; i++) {
+ var o = left[0].options[i];
+ if (o.selected) {
+ Widgets.prototype.moveFromAToB(o, left, right);
+ }
}
- });
});
text.append(left).append(buttonToLeft).append(buttonToRight).append(right);
t.after(text);
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs