Метод условного клика не работает - PullRequest
0 голосов
/ 22 марта 2012

После этого учебника У меня есть вызов 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 строк. Я попытался обернуть if, если вокруг вызова $ .ajax, однако это приводит к отображению только этого, вместо добавления нового партиала к текущей странице, я перенаправлен на 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 ]

1 голос
/ 22 марта 2012

В этой строке вы должны увидеть ошибку:

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

length - это свойство, а не функция.Итак:

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

Для отладки подобных вещей ничто не сравнится с с помощью отладчика и открытой консоли, убедившись, что браузер настроен на сообщение об ошибках,и т. д., и т. д. Инструменты, которые будут использоваться.

1 голос
/ 22 марта 2012

Я считаю, что вы хотите $('.editorRow').length < 5 - т.е. .length атрибут, а не .length();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...