首页 > 解决方案 > 如何修复声明或声明预期错误

问题描述

我想用动态下拉列表附加表格行,但在 jquery 代码中得到错误声明或语法错误。如何解决?

$(".addtable").click(function () {
    debugger;
     $("#fields tbody").append("<tr><td>@Html.DropDownListFor(m => m.MedID, ViewBag.MedicineList as List<SelectListItem>, new { @class = "form-control", placeholder = "Category", id = "manfac", required = "required" })</td><td><input type="number" class="form-control" name=" Quantity" required></td><td><button type="button" class="btn btn-primary addtable">Add More</button><a href="javascript:void(0);" class="btn btn-primary remCF">Remove</a></td></tr>");

});

标签: javascriptjqueryasp.net-mvcappend

解决方案


在一个虚拟项目中测试了这种方法后,我发现了两个问题:

  1. 您需要用单引号而不是双引号来包装您的字符串,即将 .append("...") 更改为 .append('...') 。
  2. Html.DropDownListFor() 生成一个包含换行符的字符串,这会导致 javascript 字符串中出现换行符,从而引发语法错误。所以你需要做类似的事情: .append('@(Html.Raw(Html.DropDownListFor(...).ToString().Replace(System.Environment.NewLine, "")))'),它看起来很丑,但它在我的虚拟项目中有效。`

所以试试:

$(".addtable").click(function () {
debugger;
 $("#fields tbody").append('<tr><td>@(Html.Raw(Html.DropDownListFor(m => m.MedID, ViewBag.MedicineList as List<SelectListItem>, new { @class = "form-control", placeholder = "Category", id = "manfac", required = "required" }).ToString().Replace(System.Environment.NewLine, "")))</td><td><input type="number" class="form-control" name=" Quantity" required></td><td><button type="button" class="btn btn-primary addtable">Add More</button><a href="javascript:void(0);" class="btn btn-primary remCF">Remove</a></td></tr>');
});

推荐阅读