根据json响应显示/隐藏表单元素

时间:2018-05-16 08:40:13

标签: javascript jquery html json

我进行api调用并获得一个如下所示的json响应:

{"Field":"Amount","FieldName":"Amount","FieldType":"Numeric","MaximumLength":128,"MinimumLength":0,"Options":"Mandatory"}

api调用返回5-10个这些对象。 在我的HTML中,我有一个表单中的字段,它们看起来如下

<div class="form-group">
<label class="col-md-4 control-label" for="Amount">Amount</label>  
<div class="col-md-4">
<input name="amount" class="form-control input-md" id="amount" type="text" placeholder="placeholder">

 </div>
 </div>

现在,根据json repsonse,我需要显示/隐藏不同的字段。另外,我需要传递最小和最大长度,以及是否需要(“选项”:“强制”,在此示例中)属性为html,因此前端已经验证(显然,进一步验证将是完成服务器端。)

最好的方法是什么?

编辑:

我使用class =“hidden”隐藏表单元素。此外,每个表单元素都有一个与表单元素的id相同的类。

到目前为止我所尝试的是以下内容:

var ids = [];
for(var item in data) {
 ids.push(data[item]['Field']);
     $("." + ids[ids.length]).removeClass("hidden");
}

所以在上面的例子中,我希望在第一次迭代中发生的是

$("." + ids[ids.length]).removeClass("hidden");

更改为

$(.Amount).removeClass("hidden");

因此显示表单元素。

由于

1 个答案:

答案 0 :(得分:2)

问题出在这一行

Label label = new Label();
label.Text = $"Hello World";

MainGrid.Children.Add(label);

当你将一个元素推送到ids数组时,长度变为1,你的元素位于第0位,但你正在第一个位置访问元素。

要更正它,请将行更改为

$("." + ids[ids.length]).removeClass("hidden");