Thursday 15 September 2011

jquery - Dropdown change event calling on pageload instead of actual click change -



jquery - Dropdown change event calling on pageload instead of actual click change -

i have need post info server , ajax phone call when of multiple(1 many) dropdowns changed on page user. problem when dropdowns populated on page load think firing alter event in jquery. because getting null error page mentioning ajaxupdateattendance server before page finishes loading.

this dropdown looks like:

@html.dropdownlistfor(function(m) m(i).completed_class, new selectlist(viewbag._status), new {.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); } }); }); });

technically you're rendering select , "changing" value setting value database (or default value). check in javascript before making call, didnt variables couldnt null, i'm assuming data-regid below sake of example:

$(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); } }); } }); });

also, 1 of perks of using info attributes jquery can use

$(this).data('courseref') when info attribute "data-course-ref"

you can set var like:

var dataatts = $(this).data();

and utilize object so: dataatts.courseref, dataatts.regid, etc. dont quote syntax on that.. off bit :-)

jquery

No comments:

Post a Comment