由jQuery添加的HTML元素在回发后丢失

时间:2014-02-11 10:05:45

标签: jquery html asp.net

我正在ASP.NET中开发一个简单的网页,我也使用jQuery。在我的页面上有一个表格,每个表格中包含几个文本框。加载页面时,只有一行显示空文本框。现在,如果用户在最后一行输入任何文本,我使用jQuery在最后一行下面添加另一行。我只是克隆最后一行,重命名它并使用'insertAfter'函数将其添加到表中。这很好用,但有两个问题:

  1. 当我提交表单(使用按钮)时,使用ASP.NET检查输入的有效性。如果有一些无效输入,我会在每行的最右端显示一条错误消息。问题是,jQuery添加的所有行都会丢失并在这种情况下消失,包括文本框的所有内容。有没有解决这个问题的方法?
  2. 在加载页面后,提交按钮直接位于第一行下方。如果我使用jQuery向表中添加一行,那么按钮将被表覆盖。我该怎么做才能防止这种行为?

2 个答案:

答案 0 :(得分:0)

问题1正在发生,因为您的验证是服务器端并且使用C#而不是客户端编写。因为你是动态地向页面添加对象(使用jQuery),你用来验证的C#.net代码不知道它们是什么,因此当回发完成它的验证时会被破坏。

解决方案是拉取所有验证客户端并在jQuery中执行。例如,您可以使用validate plugin http://bassistance.de/jquery-plugins/jquery-plugin-validation/)。

第二个问题是CCS问题。您应该将表和按钮分开并将它们放在单独的div标签中。然后随着表的大小在其容器内增加,带有按钮的另一个容器被按下屏幕而不是被覆盖。

答案 1 :(得分:0)

我现在解决了这个问题。对我来说,解决方案是使用AJAX并调用ASP.NET Webservice来进行验证,如下所述:ASP.NET Forum