【问题标题】:Create a form dynamically from JSON when a button pressed or set visible to true?当按下按钮或将可见设置为 true 时从 JSON 动态创建表单?
【发布时间】:2015-11-20 16:08:55
【问题描述】:

为标题道歉,我不知道如何一举解决我的困境。

我有一个简单的问题,但无法决定解决方案或实施。

我正在创建一个 Web 测试套件,有一个下拉菜单向用户显示可用的选项。这些选项中的每一个都是对特定模板/表单的引用。

解释一下:

选择选项:ABC / DEF / GHI。

选择 ABC 将为已填充数据的用户生成一个表单,然后他们可以提交此表单以对其运行测试或更改数据然后提交。

选择 DEF 或 GHI 将生成类似的格式但不同的格式,这些将具有不同的值等。

我想不出最好的路线,我不需要太多的复杂性,但我也在寻找优雅,矛盾?

我认为最简单的解决方案是让所有表单都已填充并在页面上但用 css 隐藏,然后我可以使用 jquery 使表单再次可见,或者某些组合可能我有一个毯子 div 隐藏它然后设置我想要可见的 z 索引,不确定但听起来不是很漂亮。

替代方案需要更多的努力,但会涉及动态创建表单,然后在按下按钮时呈现它,可能来自 json 对象。

有什么想法/建议/建议吗?

【问题讨论】:

  • IMO ...如果您想要最简单的,然后“硬编码”并根据用户选择的内容显示/隐藏表单。如果就表单结构或输入值而言没有什么需要改变的,那么这是你最好的选择。下一个问题是为什么你甚至必须显示表格。如果用户没有更改任何内容,为什么不直接在用户做出选择时提交表单?
  • @jonmrich - 这是一个很好的观点。因此,如果他们对预先填充的数据感到满意,我可以立即提交,但有时会编辑此数据,我可能还需要在某些时候随机化字段包含的值。

标签: javascript jquery html json forms


【解决方案1】:

如果我理解你,你需要这样的东西吗(给我们一个例子):

下拉选项:

<ul class="dropdown-menu">
    <li>
      <a class="ajax-link" template="my_template_form1" href="#">
        access form1
      </a>
    </li>
    <li>
      <a class="ajax-link" template="my_template_form2" href="#">
        access form2
      </a>
    </li>
</ul>

并在不重新加载提交的情况下加载表单模板:

$('a.ajax-link').click(function (e){
    $("#divMain").load($(this).attr('template'));
});

【讨论】:

  • 我认为这与我正在考虑的内容一致,我现在正在修改示例,看看我是否可以让它跳舞,如果我有任何问题会回复,谢谢你抽出宝贵的时间回复,。 :)
【解决方案2】:

它们具有相同的结构。

它们有不同的值。

他们有相同的action吗?

  • 如果,则使用一种形式,并在选择更改时更改值。
  • 如果 则由您决定,但处理一个表单要容易得多。

DEF / GHI 值是经常变化还是固定值?

  • 如果他们经常更改值,则获取 selection change 上的值与 $.getJSON 并用正确的信息填充 form,但不要保留这些信息,因为它们总是在变化。
  • 如果 no,表示它们是固定值,则在页面加载时使用 $.getJSON 获取信息(或者如果之前的答案为 no.. 在页面加载时存储信息三种形式之一)并将其存储在变量中。 (如果之前的答案是)当出现selection change 时,只需从变量中获取信息。

【讨论】:

  • 谢谢!该操作最终将去同一个地方从表单中的值构建一个加密字符串。例如,根据它是 ABC 还是 CDE,表单中的某些字段将不需要。值发生变化的可能性很大,因为我想测试人员会想要向各种变量发送垃圾邮件以及使用我可以创建的 rpedefined 变量
  • @SteveGreen 取决于您是否使用验证器插件。切换同一张表格的规则相对容易,应该是在公园里散步来处理一张表格。我建议使用 getJSON 发送每个表单附带的规则。
猜你喜欢
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多