其实,动态 FORM 的主要用途恐怕还是在于 HIDDEN 元素
有时候,想用 HIDDEN POST 一些数据,而且有各种不同的请求,如果为每种请求都写一个静态的 FORM,效率太低了,此时 DynForm 就显出价值了另外,恐怕就是对“编程主义”的网页设计人员有用——网页的所有内容都以程序和 DHTML 的方式,而不是直接写 HTML 代码的方式生成。俺尝试过这么干,对某些特殊页面还是很有效的,但都这样干好像也太过分了 :)

解决方案 »

  1.   

    挺好啊,没看到什么大问题。我以前做的表单设计器可以比你多生成radio,checkbox和select-one,select-multiple(当然还有option),外加定位信息(呵呵极端的“编程主义”),还带有默认值,少了form和br,不过代码还没有你写的好看呢。我不是说你该加这些东西啊,那些没多少作用的我觉得。用hidden post一些数据?你指的是用隐藏的IFRAME悄悄的发还是?target指向隐藏的IFRAME?
      

  2.   

    在function DynForm(_parentElement, _target, _action, _method, _onsubmit, _class)中最好能加上一个判断:
    this.parentElement = (_parentElement=="")?"",_parentElement;
      

  3.   

    在DynForm中添加一段
    this.oHiddenInputs = new ActiveXObject("Scripting.Dictionary");
    this.oInputs = new ActiveXObject("Scripting.Dictionary");
    this.oTextAreas = new ActiveXObject("Scripting.Dictionary");在添加DynFormNewHidden,,DynFormNewTextArea中分别添加:
    this.oHiddenInputs.Add(_name,oInput);
    this.oTextAreas.Add(_name,oTextArea);
    this.oInputs.Add(_name,oInput);这样可以直接从DynForm直接访问到form中的元素:
    var oDynForm = new DynForm(oDiv, "", "http://www.test.com", "post", "", "")
    oDynForm.Create()
    oDynForm.NewHidden("arg1", "value1")
    alert(oDynForm.oHiddenInputs("arg1").value);
    oDynForm.NewHidden("arg2", "")
    oDynForm.oHiddenInputs("arg2").value="value2";
    alert("隐藏元素有:" + oDynForm.oHiddenInputs.count + "个");
      

  4.   

    我一般是让他们在页面上留一块“空地”,就是一个大小合适的层<div>啦,
    然后俺用程序把代码填进层里……