Pravat Panda
Pravat Panda

Reputation: 1090

jquery select2 .on("change", function(e) reset option

i am using select2.

Usage : if a value is "COUNTRY", i want to add a onchange event to the select2, else i want to remove the onchange event as shown below :

var reportLevel = getReportLevel();

if (reportLevel != "COUNTRY") {
    $("#selected_countries").on("change", function(e) {
        prepareGlidModel(e);
    });
} else {
    $("#selected_countries").on("change", function(e) {
    });
}

Issue : Not being able to remove the onchange event, even if the else block is called. Events are called based upon the reportLevel value selected in a dropdown.

Upvotes: 1

Views: 30582

Answers (3)

maverickosama92
maverickosama92

Reputation: 2725

try following:

var reportLevel = getReportLevel(),
    // by default unbind/off change event
    $select = $("#selected_countries").off("change");

// and if country then bind it
if (reportLevel == "COUNTRY") {
   $select.on("change", function(e) {
       alert("you selected :" + $(this).val());
   });
}

Working example here: http://jsfiddle.net/JB89B/1/

Upvotes: 10

You can use off to deatach event handlers from your elements as shown below:

$("#selected_countries").off('change');

Upvotes: 1

Alok Agarwal
Alok Agarwal

Reputation: 3099

i think on else case you want to reset the value to default for this you have to use

$("#selected_countries").val('default value')

and if u just want to prevent the default action of onchange event than on else you can write

e.preventDefault()

this will help

Upvotes: 3

Related Questions