【问题标题】:How To Use Jquery Closest In AJAX?如何在 AJAX 中使用最接近的 Jquery?
【发布时间】:2020-09-07 11:27:33
【问题描述】:

在这里,我尝试根据等级下拉列表@Html.DropDownListFor(model => Model.CreditHourAndFullMarksPartialViewViewModels[i].FinalGrade, new SelectList(ViewBag.FinalGrade, "GradePointId", "Grading"), "-- Select Grade --", new { @class = "form-control", @id = "slcFinalGrade" }) 的变化,在@Html.EditorFor(model => Model.CreditHourAndFullMarksPartialViewViewModels[i].GradePoint, new { htmlAttributes = new { @class = "form-control", @id = "txtGradePoint" } }) 的各个编辑器上设置等级点值。
但是,尽管 ajax 中的所有值都可用,但没有显示 editorfor 中的值。

下面是我的 Jquery Ajax

<script>
$("select#slcFinalGrade").change(function () {
    debugger
    var getGradeVal = $("select#slcFinalGrade").val();
    var parameter = { gradePointId: getGradeVal }
    $.ajax({
        url: "/StudentResults/GetGradePoint",
        data: parameter,
        type: "GET",         
        success: function (data) {
            debugger
            $(this).closest('tr').find('input#txtGradePoint').val(data)
        }
    })
});
</script>

下面是我的html
        @for (int i = 0; i < Model.CreditHourAndFullMarksPartialViewViewModels.Count; i++)
    {
        <tr>
            @Html.HiddenFor(model => Model.CreditHourAndFullMarksPartialViewViewModels[i].ResultId)              
            <td>
                @Html.DropDownListFor(model => Model.CreditHourAndFullMarksPartialViewViewModels[i].Practical, new SelectList(ViewBag.Pratical, "GradePointId", "Grading"), "-- Select Grade --", new { @class = "form-control" })
                @Html.ValidationMessageFor(model => Model.StudentResult.Practical, "", new { @class = "text-danger" })
            </td>
            <td>
                @Html.DropDownListFor(model => Model.CreditHourAndFullMarksPartialViewViewModels[i].FinalGrade, new SelectList(ViewBag.FinalGrade, "GradePointId", "Grading"), "-- Select Grade --", new { @class = "form-control", @id = "slcFinalGrade" })
                @Html.ValidationMessageFor(model => Model.StudentResult.FinalGrade, "", new { @class = "text-danger" })
            </td>
            <td>
                @Html.EditorFor(model => Model.CreditHourAndFullMarksPartialViewViewModels[i].GradePoint, new { htmlAttributes = new { @class = "form-control", @id = "txtGradePoint" } })
                @Html.ValidationMessageFor(model => Model.StudentResult.GradePoint, "", new { @class = "text-danger" })
            </td>
        </tr>
    }

下面是我的控制器方法
 public decimal GetGradePoint(int gradePointId)
    {
        var getPoint = db.GradePoints.Where(x => x.GradePointId == gradePointId).FirstOrDefault().Points;
        return Convert.ToDecimal(getPoint);
    }

【问题讨论】:

    标签: jquery ajax asp.net-mvc


    【解决方案1】:

    您需要做的就是在您的回调中指向正确的this

    $("select#slcFinalGrade").change(function () {
        var $select = $(this);
        var getGradeVal = $("select#slcFinalGrade").val();
        var parameter = { gradePointId: getGradeVal }
        $.ajax({
            url: "/StudentResults/GetGradePoint",
            data: parameter,
            type: "GET",         
            success: function (data) {
                // this in here refers to success callback function..
                $select.closest('tr').find('input#txtGradePoint').val(data)
            }
        })
    });
    

    【讨论】:

      猜你喜欢
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 2019-04-08
      • 2012-05-05
      • 2012-05-15
      • 1970-01-01
      • 2010-11-17
      相关资源
      最近更新 更多