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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
License:
LGPL: http://www.gnu.org/licenses/lgpl.html
EPL: http://www.eclipse.org/org/documents/epl-v10.php
See the LICENSE file in the project's top-level directory for details.
Authors:
* Sebastian Werner (wpbasti)
* Andreas Ecker (ecker)
************************************************************************ */
/* ************************************************************************
#module(io_remote)
************************************************************************ */
qx.OO.defineClass("qx.html.Form");
qx.Class.ignoreInputTypes = [ "file", "submit", "image", "reset", "button" ];
qx.Class.ignoreElementTypes = [ "fieldset" ];
qx.Class.checkElementTypes = [ "radio", "checkbox" ];
qx.Class.multiSelectType = "select-multiple";
qx.Class.inputFilter = function(vNode)
{
if (vNode.disabled) {
return false;
}
var vTag = (vNode.tagName || "").toLowerCase();
if (qx.lang.Array.contains(qx.html.Form.ignoreElementTypes, vTag)) {
return false;
}
var vType = vNode.type.toLowerCase();
if (qx.lang.Array.contains(qx.html.Form.ignoreInputTypes, vType)) {
return false;
}
if (!vNode.checked && qx.lang.Array.contains(qx.html.Form.checkElementTypes, vType)) {
return false;
}
return true;
}
qx.Class.getFields = function(vForm) {
return Array.filter(vForm.elements, qx.html.Form.inputFilter);
}
qx.Class.encodeField = function(vNode)
{
var vName = vNode.name || "";
var vType = (vNode.type || "").toLowerCase();
if(vType === qx.html.Form.multiSelectType)
{
var vValues = [];
for(var i=0; i<vNode.options.length; i++)
{
if(vNode.options[i].selected) {
vValues.push(vName + "=" + vNode.options[i].value);
}
}
return vValues.join("&");
}
else
{
return vName + "=" + vNode.value;
}
}
qx.Class.encodeForm = function(vForm)
{
var vFields = qx.html.Form.getFields(vForm);
var vAll = [];
for (var i=0, l=vFields.length; i<l; i++) {
vAll.push(qx.html.Form.encodeField(vFields[i]));
}
return vAll.join("&");
}
qx.Class.bind = function(vForm, vMethod)
{
qx.html.EventRegistration.addEventListener(vForm, "submit", function(e)
{
e.returnValue = false;
if (typeof e.preventDefault === "function") {
e.preventDefault();
}
return vMethod(e);
});
}
|