to input, javascript doesn't work and dont show result in the input field and then everything has to go to the database.
My HTML code with input field:
<tbody>
<tr>
<td><input type="time" class="form-control form-control-sm" id="start" name="darb_work"></td>
<td><input type="time" class="form-control form-control-sm" id="end" name="darb_finish"></td>
<td><input type="text" class="form-control form-control-sm" id="diff" name="darb_result"></td>
</tr>
</tbody>
HTML code with span field :
<tbody>
<tr>
<td><input type="time" class="form-control form-control-sm" id="start" name="darb_work"></td>
<td><input type="time" class="form-control form-control-sm" id="end" name="darb_finish"></td>
<td><span type="time" class="form-control form-control-sm" id="diff" name="darb_result"></td>
</tr>
</tbody>
My PHP code:
if (isset($_POST['create_darb'])) {
$darb_title = escape($_POST['title']);
$darb_user = escape($_POST['darb_user']);
$darb_status = escape($_POST['darb_status']);
$darb_content = escape($_POST['darb_content']);
$darb_date = escape(date('d-m-y'));
$darb_fileUpload = escape($_FILES['darb_fileUpload']['name']);
$darb_fileUpload_temp = escape($_FILES['darb_fileUpload']['tmp_name']);
$darb_work = escape($_POST['darb_work']);
$darb_finish = escape($_POST['darb_finish']);
$darb_result = escape($_POST['darb_result']);
move_uploaded_file($darb_fileUpload_temp, "../uploads/$darb_fileUpload");
$query = "INSERT INTO darb(darb_title, darb_user, darb_date, darb_content, darb_status, darb_fileUpload, darb_work, darb_finish, darb_result) ";
$query .= "VALUES('{$darb_title}','{$darb_user}',now(),'{$darb_content}','{$darb_status}','{$darb_fileUpload}', '{$darb_work}','{$darb_finish}','{$darb_result}')";
$create_darb_query = mysqli_query($connection, $query);
confirmQuery($create_darb_query);
$the_darb_id = mysqli_insert_id($connection);
Javascript code:
$('#hours input').on('keyup change',function () {
differenceHours.diff_hours('start', 'end', 'diff');
});
More Javascript code :
var DifferenceHours = function(options){
const vars = {
first_hour_split: null,
second_hour_split: null,
$el: null
};
let _this = this;
this.construct = function (options) {
$.extend(vars , options);
};
this.diff_hours = function (time1, time2, result) {
vars.first_hour_split = $('#' + time1).val().split(':');
vars.second_hour_split = $('#' + time2).val().split(':');
vars.$el = $('#' + result);
let hours;
let minute;
if (parseInt(vars.first_hour_split[0]) < parseInt(vars.second_hour_split[0]) && parseInt(vars.first_hour_split[1]) < parseInt(vars.second_hour_split[1])) {
hours = parseInt(vars.second_hour_split[0]) - parseInt(vars.first_hour_split[0]);
minute = parseInt(vars.second_hour_split[1]) - parseInt(vars.first_hour_split[1]);
let _hours = '';
let _minute = '';
if (hours < 10) {
_hours ='0' + hours;
} else {
_hours = hours;
}
if (minute < 10) {
_minute = '0' + minute;
} else {
_minute = minute;
}
vars.$el.text(_hours + 'h' + _minute + 'm')
}else if (parseInt(vars.second_hour_split[0]) > parseInt(vars.first_hour_split[0])) {
if (parseInt(vars.second_hour_split[1]) < parseInt(vars.first_hour_split[1])) {
let _hours = parseInt(vars.second_hour_split[0]) - 1;
let _minute = parseInt(vars.second_hour_split[1]) + 60;
let final_hours = '';
let final_min = '';
hours = _hours - parseInt(vars.first_hour_split[0]);
minute = _minute - parseInt(vars.first_hour_split[1]);
if (hours < 10) {
final_hours = '0' + hours;
} else {
final_hours = hours;
}
if (minute < 10) {
final_min = '0' + minute;
} else {
final_min = minute;
}
vars.$el.text(final_hours + 'H' + final_min)
}
if (parseInt(vars.second_hour_split[1]) === parseInt(vars.first_hour_split[1])) {
hours = parseInt(vars.second_hour_split[0]) - parseInt(vars.first_hour_split[0]);
let final_hours = '';
if (hours < 10) {
final_hours = '0' + hours;
} else {
final_hours = hours;
}
vars.$el.text(final_hours + 'H' + '00')
}
}else if (parseInt(vars.first_hour_split[0]) > parseInt(vars.second_hour_split[0])) {
let first_hour_only_hour = parseInt(vars.first_hour_split[0]);
let second_hour_only_hour = parseInt(vars.second_hour_split[0]);
let first_hour_only_min = parseInt(vars.first_hour_split[1]);
let second_hour_only_min = parseInt(vars.second_hour_split[1]);
let tmp_hour = 24 - first_hour_only_hour;
let tmp_ttl_hour = tmp_hour + second_hour_only_hour;
let tmp_ttl_min = first_hour_only_min + second_hour_only_min;
let tmp_new_hour = 0;
let tmp_new_min_mod = 0;
let _hours = '';
let _min = '';
if (tmp_ttl_min > 59) {
tmp_new_hour = parseInt(tmp_ttl_min/60);
tmp_new_min_mod = tmp_ttl_min%60;
tmp_ttl_hour += tmp_new_hour;
} else {
tmp_new_min_mod = tmp_ttl_min
}
if (tmp_ttl_hour < 10) {
_hours = '0' + tmp_ttl_hour;
} else {
_hours = tmp_ttl_hour
}
if (tmp_new_min_mod < 10) {
_min = '0' + tmp_new_min_mod
} else {
_min = tmp_new_min_mod
}
vars.$el.text(_hours + 'H' + _min)
} else if (parseInt(vars.first_hour_split[0]) === parseInt(vars.second_hour_split[0])) {
hours = '00';
let minute = 0;
if (parseInt(vars.first_hour_split[1]) < parseInt(vars.second_hour_split[1])) {
minute = parseInt(vars.second_hour_split[1]) - parseInt(vars.first_hour_split[1]);
}
if (minute < 10) {
vars.$el.text(hours + 'H0' + minute)
} else {
vars.$el.text(hours + 'H' + minute)
}
}else if (parseInt(vars.first_hour_split[0]) === 0 && parseInt(vars.first_hour_split[1]) === 0) {
hours = parseInt(vars.second_hour_split[0]);
minute = parseInt(vars.second_hour_split[1]);
if (hours === 0) {
vars.$el.text('00H' + minute)
}else if (minute === 0){
if (hours < 10) {
vars.$el.text('0' + hours + 'H00');
}else {
vars.$el.text(hours + 'H00');
}
}else {
vars.$el.text(hours + 'H' + minute)
}
}
};
this.construct(options);
};
const differenceHours = new DifferenceHours();
What I have tried:
I have tried a lot of advice online but couldn't resolve this problem.