javascript - 无法读取 HTMLSelectElement 处未定义的属性 'replace'

标签 javascript jquery asp.net

我使用 jQuery 通过以下脚本克隆表格主体:

//1. Add new row
$("#addNew").click(function(e) {
  e.preventDefault();
  var $tableBody = $("#dataTable");
  var $trLast = $tableBody.find("tr:last");
  var $trNew = $trLast.clone();

  var suffix = $trNew.find(':input:first').attr('name').match(/\d+/);
  $trNew.find("td:last").html('<a href="#" class="remove">Remove</a>');
  $.each($trNew.find(':input'), function(i, val) {
    // Replaced Name
    var oldN = $(this).attr('name');
    var newN = oldN.replace('[' + suffix + ']', '[' + (parseInt(suffix) + 1) + ']');
    $(this).attr('name', newN);
    //Replaced value
    var type = $(this).attr('type');
    if (type.toLowerCase() == "text") {
      $(this).attr('value', '');
    }

  });
  $trLast.after($trNew);
});

// 2. Remove
$('a.remove').live("click", function(e) {
  e.preventDefault();
  $(this).parent().parent().remove();
});

我正在尝试克隆以下内容:

<tr style="border:1px solid black">
    <td>@Html.TextBoxFor(a => a[j].WarmUp)</td>
    <td>@Html.TextBoxFor(a => a[j].ExerciseName)</td>
    <td>@Html.TextBoxFor(a => a[j].CoolDown)</td>
    <td>@Html.TextBoxFor(a => a[j].MomentOfTheDay)</td>
    <td>@Html.TextBoxFor(a => a[j].ExerciseWeek)</td>
    <td><select asp-items="Html.GetEnumSelectList<SampleMvcApp.Models.Days>()"></select></td>
    <td>
        @if (j > 0)
        {
            <a href="#" class="remove">Remove</a>
        }
    </td>

但是,当我只有所有 HTML.TextBox 时,它效果很好。或 <td> 内的任何其他文本标签,但是当我添加

<select asp-items="Html.GetEnumSelectList<SampleMvcApp.Models.Days>()"></select>` 

它停止工作。

处获取错误
var newN = oldN.replace('[' + suffix + ']', '[' + (parseInt(suffix) + 1) + ']');

有什么建议吗?

最佳答案

您的<select>标签(包含在 jQuery 的 :input 选择器中)没有 name属性,所以$(this).attr('name')该标签将是未定义的。

因此oldN也将是未定义的,因此会出现错误。

添加name归因于您的<select>标签,或搜索实际的 <input>标签而不是 :input将自己限制在文本框内:

$.each($trNew.find('input:text'), function (i, val) {

关于javascript - 无法读取 HTMLSelectElement 处未定义的属性 'replace',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44812492/

相关文章:

javascript - ASP.NET MVC 4 AJAX.BeginForm 和 PartialViews

javascript - 在 KnockoutJS 中为 jQuery 插件创建自定义绑定(bind)

javascript - 两个ajax表单不能同时工作

c# - 如何将 jQuery 星级评分插件与 ASP.NET 和 SQL Server 数据库结合使用

asp.net - C# 从 web.config 中读取 customHeaders 值

javascript - 滚动到带有固定标题的 anchor ,隐藏在标题后面的内容,边距和顶部填充不起作用

javascript - 如何动态添加表格行,包括文本框和具有不同 ID 的选择框

javascript - 使用 CSS/JS 定位特定元素之后的元素

javascript - AJAX 无声地失败

c# - 在具有不同大小写的 switch-case block 中比较 C# 中的字符串