2012-03-22 25 views
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部分

@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> 

回答

1

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

+0

你是對的,但它不會改變我遇到的問題。當我使用if語句時,我將彈出到BlankEditorRow,沒有它,部分呈現到行列表中。 – Cookie 2012-03-22 12:30:48

1

現在你可以看到在這條線上的JavaScript控制檯的錯誤:

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

length是一個屬性,而不是功能。所以:

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

爲了調試這樣的事情,沒有什麼比using a debugger,並且具有控制檯打開,確保瀏覽器設置爲大家介紹一下錯誤,等等等等的工具都在那裏使用。

+0

我正在使用提琴手和螢火蟲謝謝。我問的是爲什麼在ajax調用之前添加代碼導致完全不同的操作? – Cookie 2012-03-22 12:33:05

+0

@Cookie:你需要澄清這個問題,根本不清楚你在問什麼。 – 2012-03-22 12:42:50

+0

我不完全確定如何澄清。第一個jquery第一個,結果是行列添加到列表中。在$ .ajax之前放置任何語句都會導致只顯示一行的新頁面。 – Cookie 2012-03-22 12:49:39