首页 > 如何根据给出的任意几个字段随机生成一个表单

如何根据给出的任意几个字段随机生成一个表单

有一个需求,根据后台传过来的表单任意两项,比如name,avatar生成一个表单,
首先想到查表法

    let formType={
      text: <Input/>,
      file: <File/>,
      textarea: <Textarea/>
    }

    let createForm={
      resume:{
        type:text,
        name:startup[resume],
        label:"简介"
      },
      avatar:{
        type:file,
        name:startup[avatar],
        label:"头像"
      }
    }
    function initCompleteForm(ele){
      let type = createForm[ele].type
      let name = createForm[ele].name
      let label = createForm[ele].label
      let inputEle = formType.type
      inputEle.setAttribute("name",name)
      imputEle.setAttribute("label",label)
      var MyForm = document.getElementById("complete-startup-form")
      MyForm.appendChild(inputEle)
    }
    columns.map((item,index) => {
      initCompleteForm(item)
    })
    // columns是需要插入字段的数组,如[name,age];表单的写法是用了一个formsy-react-components的插件,关键代码是这样
    
<MyForm id="complete-startup-form">
</MyForm>

但是每一个输入域的类型是不同的,有的是file,text,textarea等,但是这样我取到每一个字段的type是file或者text之后,怎么生成一个表单,就有点懵了,还要有name值和label,或者有什么其它的方法


一个可能的方案是:为file, text, textarea等类型分别确定一个模板,然后根据后台返回的数据的类型确定使用哪一个模板。

另外,你的第一个lebel应该是笔误。

【热门文章】
【热门文章】