I have this script which checks the value of the select field and runs code depending on the condition. For example if the select value is equal to 1 then the code will input value into the input fields which a user cant change.
Jquery
$('#mon_reason').on('change click', function (e) {
var reason = $('#mon_reason').val();
if(reason == 1){
$("#mon-worked").val(8.50);
$("#mon-adjust").attr("readonly", true);
$("#mon-adjust").val(0.00);
$("#mon-total").val(8.50);
} if(reason == 2) {
$("#mon-worked").val(0.00);
$("#mon-adjust").attr("readonly", true);
$("#mon-adjust").val(8.50);
$("#mon-total").val(8.50);
} if(reason == 3) {
$("#mon-worked").val(0.00);
$("#mon-adjust").attr("readonly", true);
$("#mon-adjust").val(8.50);
$("#mon-total").val(8.50);
} if(reason == 4) {
$("#mon-worked").val(4.25);
$("#mon-adjust").attr("readonly", true);
$("#mon-adjust").val(4.25);
$("#mon-total").val(8.50);
}if(reason == 5) {
$("#mon-worked").val(4.25);
$("#mon-adjust").attr("readonly", true);
$("#mon-adjust").val(4.25);
$("#mon-total").val(8.50);
}if(reason == 6 || reason == 7) {
$("#mon-worked").val();
$("#mon-adjust").attr("readonly", false);
$("#mon-adjust").val();
$("#mon-total").val(8.50);
$("#mon-adjust").on('keyup keydown change click keypress', function(){
var val1 = +$("#mon-adjust").val();
var val2 = +$("#mon-total").val();
$("#mon-worked").val(val2-val1);
});
}if(reason == 8) {
$("#mon-worked").val(8.50);
$("#mon-adjust").attr("readonly", false);
$("#mon-adjust").val();
$("#mon-adjust").on('keyup keydown change click keypress', function(){
var val3 = +$("#mon-worked").val();
var val4 = +$("#mon-adjust").val();
$("#mon-total").val(val3+val4);
});
}
});
});
HTML
<select class="worked-input adjustment-input" id="mon_reason" name="">
<option disabled value="" selected="selected" >
select an option ..
</option>
<option value="1" >
working
</option>
<option value="2">
Annual Leave Full Day - Paid
</option>
<option value="3">
Annual Leave Full Day - Unpaid
</option>
<option value="4">
Annual Leave Half Day - Paid
</option>
<option value="5">
Annual Leave Half Day - Unpaid
</option>
<option value="6">
Sick Leave
</option>
<option value="7">
AWOL
</option>
<option value="8">
Overtime
</option>
</select>
<input readonly id="mon-worked" />
<input readonly id="mon-adjust" />
<input readonly id="mon-total" />
My issue:
if a user selects option sick leave(6) or AWOL(7) then the input fields "mon-adjust" and "mon-total" will subtract from one another to give us the value of "mon-worked".
if a user selects option overtime(8) then the input fields "mon-worked" and "mon-adjust" will be added together to give us the value of "mon-total".
The problem I am having is if a user chooses option sick leave(6) or AWOL(7) and then decides to choose overtime(8) the code
var val1 = +$("#mon-adjust").val();
var val2 = +$("#mon-total").val();
$("#mon-worked").val(val2-val1);
});
still runs and doesn't get cancelled after the user chooses a different option. The same happens if you choose overtime(8) first and then change to sick leave(6) or AWOL(7)
$("#mon-adjust").on('keyup keydown change click keypress', function(){
var val3 = +$("#mon-worked").val();
var val4 = +$("#mon-adjust").val();
$("#mon-total").val(val3+val4);
});
this code will still run.
Is there any way to reset or remove the previous code from running after a user chooses a new option from the select dropdown if a condition has changed?