条件点击方法不起作用

时间:2012-03-22 12:22:38

标签: jquery asp.net-mvc-3 c#-4.0

tutorial之后,我有一个向列表添加行的Ajax调用,它可以正确地将新的局部视图添加到现有项列表中。

@model List<FTD.Models.Rate>

@using (Html.BeginForm("EditRates","Maintenance"))
{          
<div id="editorRows">
@foreach (FTD.Models.Rate _rate in Model)
{
    Html.RenderPartial("_Rate",_rate); 
}
</div>
@Html.ActionLink("Add Another", "BlankEditorRow", null, new { id = "addItem" })
<br />
<input id="Edit" name="submit" type="submit" value="Edit" />

 }
 <script type="text/javascript">
 $("#addItem").click(function () {
    $.ajax({
        url: this.href,
        cache: false,
        success: function (html) { $("#editorRows").append(html); }
    });
    return false;
 </script>

我想将列表限制为5行。我试图在$ .ajax调用周围包装一个if但是这导致只显示而不是向当前页面添加一个新部分我被重定向到BlankEditorRow。

$("#addItem").click(function () {
    if ($('.editorRow').length < 5) {
        $.ajax({
            url: this.href,
            cache: false,
            success: function (html) { $("#editorRows").append(html); }
        });
    }
    return false;
});

控制器操作

 public ActionResult BlankEditorRow()
 {
    if (Request.IsAjaxRequest())
        return PartialView("_Rate", new Rate());
    return View("_Rate", new Rate());
 }

_Rate Partial

@model FTD.Models.Rate

<div class="editorRow">
    @Html.TextBoxFor(m => Model.Date, new { @class = "date" })
    @Html.ValidationMessageFor(m => Model.Date)
    @Html.TextBoxFor(m => Model.InterestRate)
    @Html.ValidationMessageFor(m => Model.InterestRate)
    <a href="#" class="deleteRow">delete</a>
</div>

2 个答案:

答案 0 :(得分:1)

我相信你想要$('.editorRow').length < 5 - 即.length属性,而不是.length();

答案 1 :(得分:1)

您应该在此行的JavaScript控制台中看到错误:

if ($('.editorRow').length() < 5) {

length是属性,而不是函数。所以:

if ($('.editorRow').length < 5) {

为了调试这样的事情,没有什么比打扰using a debugger,打开控制台,确保浏览器设置为告诉你有关错误等等。这些工具可供使用。