使用jQuery动态添加和删除元素时如何查找元素数?

时间:2009-01-25 13:37:19

标签: asp.net jquery dynamic

我正在开发一个Web应用程序(使用ASP.NET 2.0(C#)和jQuery)

在我的应用程序中,我们有一个界面,我们的员工可以使用该界面输入公司的记录。我们提供了基本字段,公司名称,联系人,电话等界面。现在您知道有些公司有分支机构,有些公司有少数(1到10个),有些公司有很多(100-200个)分支机构。我们还使用jQuery提供了一个动态接口,允许我们的员工根据特定公司的分支机构数量添加分支。

另外,我们使用jQuery的追加函数作为..

$("#branches").append("branch html fields text liek a html input field with id 'Namebranch1' ");

现在,通过添加,我们还提供了一个带有evey分支字段的按钮,用于删除该特定分支。删除我已经使用

$("#branch1").remove()

假设我已经添加了5个分支,然后在提交之前,我觉得不需要输入分支号3,所以我删除了那个分支数据。 所以添加和删除的过程如下,我们添加了

1,2,3,4,5

然后,删除了第3分支,现在有

1,2,4,5

现在因为我们有4个元素,所以每当我的用户添加或删除分支时,我都会分别从javascript变量中添加1和减1。然后在隐藏字段中输入该变量,这样当用户提交数据时,我将拥有正确的计数数,表明用户如何添加任何分支,并且根据此计数,我知道我有多少次必须运行循环以分别追踪所有分支数据。

但问题是当用户提交表单然后我运行循环4次,这意味着什么,我将获得1,2和4分支的数据,但是当它完成4个循环后循环将停止,数据第4分支是4号将失踪。因为当用户将sibmit形式时将发布的元素为(branchName5,branchTitle5等)

我希望你们明白我需要什么?请告诉我这个问题的一些合理解决方案。

由于

2 个答案:

答案 0 :(得分:1)

摆脱隐藏的计数器变量,只需遍历Request.Form.Keys寻找分支*。然后,您将只处理以branch开头的任何表单变量。

class Branch { public string Name; public string Title; }

void OnLoad(EventArgs e) {
   base.OnLoad(e);

   var branches = new Dictionary<int, Branch>();
   foreach (string key in Request.Form.Keys) {
     if (!key.StartsWith("branch")) continue;

     int id;
     if (key.StartsWith("branchTitle")) {
       id = int.Parse(key.Substring("branchTitle".Length));
       branches.Ensure(i).Title = Request.Form[key];
     } else if (key.StartsWith("branchName")) {
       id = int.Parse(key.Substring("branchName".Length));
       branches.Ensure(i).Name = Request.Form[key];
     }            
   }
}

// Ensure extension method
T Ensure<K, T>(this Dictionary<K, T> d, K key) where T:new {
   if (!d.ContainsKey(key)) {
      d.Add(key, new T());
   }
   return d[key];
}

答案 1 :(得分:0)

也许这是一个线索?在提交中....

$('#branches').each( function (i) { this.id = 'branch' + i } );