当用户在页面上更改多个(1到多)下拉列表时,我需要使用和AJAX调用将数据回发到服务器。问题是,当在页面加载中填充下拉列表时,我认为它会触发jquery中的更改事件。因为在页面加载完成之前,我从服务器获得了一个提到AJAXUpdateAttendance
的空错误页面。
下拉列表就是这样的:
@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
$(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);
}
});
});
});
发布于 2014-11-09 00:31:33
从技术上讲,您正在呈现一个select,然后通过设置来自数据库的值(或一些默认值)“更改”该值。因此,只需在调用之前检查javascript,您没有说哪些变量不能为null,所以为了示例起见,我假设它的数据-regId如下:
$(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,类似于:
var dataAtts = $(this).data();
然后像这样的对象一样使用它:dataAtts.courseRef, dataAtts.regId
等等,但是不要引用我的语法。可能有点离题:-)
https://stackoverflow.com/questions/26823534
复制相似问题