formproxy.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. Trex.install("editor.getForm",
  2. function(editor, toolbar, sidebar, canvas, config){
  3. var _formproxy = new Trex.FormProxy(editor, sidebar, config);
  4. editor.getForm = function() {
  5. return _formproxy;
  6. };
  7. }
  8. );
  9. Trex.FormProxy =Trex.Class.create( {
  10. initialize : function(editor, sidebar, config){
  11. this.editor = editor;
  12. this.sidebar = sidebar;
  13. this.config = config;
  14. var _elForm = this.elForm = _DOC.forms[config.form] || _DOC.getElementById(config.form);
  15. if(!_elForm) {
  16. throw new Error("[Exception]Trex.Form : not exist element - " + config.form);
  17. }
  18. _elForm.onsubmit = function() {
  19. return _FALSE;
  20. };
  21. },
  22. submit: function() {
  23. this.elForm.submit();
  24. },
  25. createField: function(elField) {
  26. this.elForm.appendChild(elField);
  27. },
  28. getElements: function() {
  29. return this.elForm.elements;
  30. },
  31. getElementByName: function(name) {
  32. return this.elForm[name];
  33. },
  34. getFormField: function() {
  35. var _formfield = {};
  36. var _fields = this.getElements();
  37. var _field;
  38. for(var i=0; i<_fields.length; i++) {
  39. _field = _fields[i];
  40. if(!["select", "input", "textarea"].contains(_field.tagName.toLowerCase())) {
  41. continue;
  42. }
  43. if(!_field.name && !_field.id) {
  44. continue;
  45. }
  46. if(_field.tagName.toLowerCase() == "select") {
  47. if (_field.selectedIndex > 0) {
  48. _formfield[_field.name] = _field.options[_field.selectedIndex].value;
  49. }
  50. } else {
  51. if(_field.type == "radio" && !_field.checked) {
  52. } else if(_field.type == "checkbox" && !_field.checked) {
  53. } else {
  54. _formfield[_field.name || _field.id] = _field.value;
  55. }
  56. }
  57. }
  58. return _formfield;
  59. },
  60. setFormField: function(formfield){
  61. if(!formfield) {
  62. return;
  63. }
  64. var _fields = this.getElements();
  65. var _field;
  66. var _value;
  67. for(var i=0; i<_fields.length; i++) {
  68. _field = _fields[i];
  69. if(!["select", "input", "textarea"].contains(_field.tagName.toLowerCase())) {
  70. continue;
  71. }
  72. if(_field.name === _NULL || _field.name.length === 0) {
  73. continue;
  74. }
  75. if(!formfield[_field.name]) {
  76. continue;
  77. }
  78. _value = formfield[_field.name];
  79. if(_field.tagName.toLowerCase() == "select") {
  80. for(var j=0; j<_field.options.length; j++) {
  81. if(_field.options[j].value == _value) {
  82. _field.options[j].selected = _TRUE;
  83. break;
  84. }
  85. }
  86. } else {
  87. if(_field.type == "radio" || _field.type == "checkbox") {
  88. if(_field.value == _value) {
  89. _field.checked = _TRUE;
  90. }
  91. } else {
  92. _field.value = _value;
  93. }
  94. }
  95. }
  96. }
  97. });