首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >下拉更改事件调用页面负载,而不是实际单击“更改”

下拉更改事件调用页面负载,而不是实际单击“更改”
EN

Stack Overflow用户
提问于 2014-11-09 00:14:01
回答 1查看 52关注 0票数 0

当用户在页面上更改多个(1到多)下拉列表时,我需要使用和AJAX调用将数据回发到服务器。问题是,当在页面加载中填充下拉列表时,我认为它会触发jquery中的更改事件。因为在页面加载完成之前,我从服务器获得了一个提到AJAXUpdateAttendance的空错误页面。

下拉列表就是这样的:

代码语言:javascript
运行
复制
  @Html.DropDownListFor(Function(m) m(i).Completed_Class, New SelectList(ViewBag._status), New With {.data_regId = currentItem.staff_id, .data_IsStaff = "true", .data_CourseRef = currentItem.course_ref, .class = "attendDrop", .data_url = Html.Action("AJAXUpdateAttendance", "Admin")})

Jquery

代码语言:javascript
运行
复制
$(function(){
   $(".attendDrop").on("change keyup").change(function () {

        var isStaff = $(this).attr('data-IsStaff');

        if (isStaff) {
            var classId = $(this).attr('data-CourseRef');
            var regId = $(this).attr('data-regId');
            var url = $(this).attr("data-url");
            var sval = $(this).val();
            $.ajax({
                url: url,
                data: {isStaff: isStaff, regId: regId, classId: classId, sVal: sval},
                success: function (data) {
                    console.log(data.message);
                }
            });
          });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-09 00:31:33

从技术上讲,您正在呈现一个select,然后通过设置来自数据库的值(或一些默认值)“更改”该值。因此,只需在调用之前检查javascript,您没有说哪些变量不能为null,所以为了示例起见,我假设它的数据-regId如下:

代码语言:javascript
运行
复制
$(function(){
   $(".attendDrop").on("change keyup").change(function () {

        var isStaff = $(this).attr('data-IsStaff');

        if (isStaff) {
            var classId = $(this).attr('data-CourseRef');
            var regId = $(this).attr('data-regId');
            var url = $(this).attr("data-url");
            var sval = $(this).val();
            if (regId != null) {
                $.ajax({
                    url: url,
                    data: {isStaff: isStaff, regId: regId, classId: classId, sVal: sval},
                    success: function (data) {
                        console.log(data.message);
                    }
                });
            }
          });
});

此外,在jquery中使用数据属性的好处之一是可以使用

当数据属性为$(this).data('courseRef')时,"data-course-ref"

您还可以设置一个var,类似于:

代码语言:javascript
运行
复制
var dataAtts = $(this).data();

然后像这样的对象一样使用它:dataAtts.courseRef, dataAtts.regId等等,但是不要引用我的语法。可能有点离题:-)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26823534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档