I have a CreateVoucher form, when you select the arrival and departure dates it should calculate the number of nights by doing a subtraction calculation, in my case, the JS script is not executed or not recognized, can you review this code and tell me if you see something that I don't?
@extends('layouts.admin')
@section('content')
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
{{ trans('global.create') }} {{ trans('cruds.createVoucher.title_singular') }}
</div>
<div class="panel-body">
<form method="POST" action="{{ route("admin.create-vouchers.store") }}" enctype="multipart/form-data">
@csrf
<div class="form-group {{ $errors->has('agent') ? 'has-error' : '' }}">
<label class="required" for="agent_id">{{ trans('cruds.createVoucher.fields.agent') }}</label>
<input type="hidden" name="agent_id" value="{{ auth()->user()->id }}">
<p>{{ auth()->user()->name }}</p>
@if($errors->has('agent'))
<span class=" help-block" role="alert">{{ $errors->first('agent') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.agent_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('client') ? 'has-error' : '' }}">
<label for="client_id">{{ trans('cruds.createVoucher.fields.client') }}</label>
<select class="form-control select2" name="client_id" id="client_id">
@foreach($clients as $id => $entry)
<option value="{{ $id }}" {{ old('client_id') == $id ? 'selected' : '' }}>{{ $entry }}</option>
@endforeach
</select>
@if($errors->has('client'))
<span class="help-block" role="alert">{{ $errors->first('client') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.client_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('is_adult') ? 'has-error' : '' }}">
<label>{{ trans('cruds.createVoucher.fields.is_adult') }}</label>
<select class="form-control" name="is_adult" id="is_adult">
<option value disabled {{ old('is_adult', null) === null ? 'selected' : '' }}>{{ trans('global.pleaseSelect') }}</option>
@foreach(App\CreateVoucher::IS_ADULT_SELECT as $key => $label)
<option value="{{ $key }}" {{ old('is_adult', '') === (string) $key ? 'selected' : '' }}>{{ $label }}</option>
@endforeach
</select>
@if($errors->has('is_adult'))
<span class="help-block" role="alert">{{ $errors->first('is_adult') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.is_adult_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('arrival_date_and_time') ? 'has-error' : '' }}">
<label class="required" for="arrival_date_and_time">{{ trans('cruds.createVoucher.fields.arrival_date_and_time') }}</label>
<input class="form-control date" type="text" name="arrival_date_and_time" id="arrival_date_and_time" value="{{ old('arrival_date_and_time') }}" required>
@if($errors->has('arrival_date_and_time'))
<span class="help-block" role="alert">{{ $errors->first('arrival_date_and_time') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.arrival_date_and_time_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('departuredate') ? 'has-error' : '' }}">
<label class="required" for="departuredate">{{ trans('cruds.createVoucher.fields.departuredate') }}</label>
<input class="form-control date" type="text" name="departuredate" id="departuredate" value="{{ old('departuredate') }}" required>
@if($errors->has('departuredate'))
<span class="help-block" role="alert">{{ $errors->first('departuredate') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.departuredate_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('have_children') ? 'has-error' : '' }}">
<label>{{ trans('cruds.createVoucher.fields.have_children') }}</label>
<select class="form-control" name="have_children" id="have_children">
<option value disabled {{ old('have_children', null) === null ? 'selected' : '' }}>{{ trans('global.pleaseSelect') }}</option>
@foreach(App\CreateVoucher::HAVE_CHILDREN_SELECT as $key => $label)
<option value="{{ $key }}" {{ old('have_children', '') === (string) $key ? 'selected' : '' }}>{{ $label }}</option>
@endforeach
</select>
@if($errors->has('have_children'))
<span class="help-block" role="alert">{{ $errors->first('have_children') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.have_children_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('hotel_name') ? 'has-error' : '' }}">
<label class="required" for="hotel_name_id">{{ trans('cruds.createVoucher.fields.hotel_name') }}</label>
<select class="form-control select2" name="hotel_name_id" id="hotel_name_id" required>
@foreach($hotel_names as $id => $entry)
<option value="{{ $id }}" {{ old('hotel_name_id') == $id ? 'selected' : '' }}>{{ $entry }}</option>
@endforeach
</select>
@if($errors->has('hotel_name'))
<span class="help-block" role="alert">{{ $errors->first('hotel_name') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.hotel_name_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('room_type') ? 'has-error' : '' }}">
<label class="required">{{ trans('cruds.createVoucher.fields.room_type') }}</label>
<select class="form-control" name="room_type" id="room_type" required>
<option value disabled {{ old('room_type', null) === null ? 'selected' : '' }}>{{ trans('global.pleaseSelect') }}</option>
@foreach(App\CreateVoucher::ROOM_TYPE_SELECT as $key => $label)
<option value="{{ $key }}" {{ old('room_type', '') === (string) $key ? 'selected' : '' }}>{{ $label }}</option>
@endforeach
</select>
@if($errors->has('room_type'))
<span class="help-block" role="alert">{{ $errors->first('room_type') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.room_type_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('number_of_room') ? 'has-error' : '' }}">
<label class="required" for="number_of_room">{{ trans('cruds.createVoucher.fields.number_of_room') }}</label>
<input class="form-control" type="text" name="number_of_room" id="number_of_room" value="{{ old('number_of_room', '1') }}" required>
@if($errors->has('number_of_room'))
<span class="help-block" role="alert">{{ $errors->first('number_of_room') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.number_of_room_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('night') ? 'has-error' : '' }}">
<label class="required" for="night">{{ trans('cruds.createVoucher.fields.night') }}</label>
!!!!!!! <input type="text" name="duration" id="duration"> !!!!!!!
<script>
window.addEventListener("DOMContentLoaded", function() {
const arrival_date_and_time = document.getElementById("arrival_date_and_time");
const departuredate = document.getElementById("departuredate");
const duration = document.getElementById("duration")
const aDay = 24 * 60 * 60 * 1000;
const re = /\d{2}-\d{2}-\d{4}/;
const calcDays = function() {
const arrivalString = arrival_date_and_time.value;
const departureString = departuredate.value;
if (!arrivalString.match(re)) return;
if (!departureString.match(re)) return;
const arrival = new Date(arrivalString);
const departure = new Date(departureString);
console.log(arrival.toLocaleDateString(), departure.toLocaleDateString())
if (isNaN(arrival) || isNaN(departure)) return; // or give error
arrival.setHours(15, 0, 0, 0); // consolidate
departure.setHours(15, 0, 0, 0); // consolidate
const diff = departure.getTime() - arrival.getTime();
const days = parseInt(diff / aDay);
// let text = "";
// if (days === 0) text = "Arriving and departing within 24 hours";
// else if (days === 1) text = "Single day stay";
// else text = `Duration is ${days} days`;
duration.value = days;
};
arrival_date_and_time.addEventListener("input", calcDays);
departuredate.addEventListener("input", calcDays);
})
</script>
@if($errors->has('night'))
<span class="help-block" role="alert">{{ $errors->first('night') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.night_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('room_price') ? 'has-error' : '' }}">
<label class="required" for="room_price">{{ trans('cruds.createVoucher.fields.room_price') }}</label>
<input class="form-control" type="text" name="room_price" id="room_price" value="{{ old('room_price', '0') }}" required>
@if($errors->has('room_price'))
<span class="help-block" role="alert">{{ $errors->first('room_price') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.room_price_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('total_amount') ? 'has-error' : '' }}">
<label for="total_amount">{{ trans('cruds.createVoucher.fields.total_amount') }}</label>
<input class="form-control" type="number" name="total_amount" id="total_amount" value="{{ old('total_amount', '') }}" step="0.01">
@if($errors->has('total_amount'))
<span class="help-block" role="alert">{{ $errors->first('total_amount') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.total_amount_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('payment_mode') ? 'has-error' : '' }}">
<label class="required">{{ trans('cruds.createVoucher.fields.payment_mode') }}</label>
<select class="form-control" name="payment_mode" id="payment_mode" required>
<option value disabled {{ old('payment_mode', null) === null ? 'selected' : '' }}>{{ trans('global.pleaseSelect') }}</option>
@foreach(App\CreateVoucher::PAYMENT_MODE_SELECT as $key => $label)
<option value="{{ $key }}" {{ old('payment_mode', 'Cash') === (string) $key ? 'selected' : '' }}>{{ $label }}</option>
@endforeach
</select>
@if($errors->has('payment_mode'))
<span class="help-block" role="alert">{{ $errors->first('payment_mode') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.payment_mode_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('observation') ? 'has-error' : '' }}">
<label for="observation">{{ trans('cruds.createVoucher.fields.observation') }}</label>
<input class="form-control" type="text" name="observation" id="observation" value="{{ old('observation', '') }}">
@if($errors->has('observation'))
<span class="help-block" role="alert">{{ $errors->first('observation') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.observation_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('service') ? 'has-error' : '' }}">
<label for="service">{{ trans('cruds.createVoucher.fields.service') }}</label>
<input class="form-control" type="text" name="service" id="service" value="{{ old('service', '') }}">
@if($errors->has('service'))
<span class="help-block" role="alert">{{ $errors->first('service') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.service_helper') }}</span>
</div>
<div class="form-group {{ $errors->has('internal_note') ? 'has-error' : '' }}">
<label for="internal_note">{{ trans('cruds.createVoucher.fields.internal_note') }}</label>
<input class="form-control" type="text" name="internal_note" id="internal_note" value="{{ old('internal_note', '') }}">
@if($errors->has('internal_note'))
<span class="help-block" role="alert">{{ $errors->first('internal_note') }}</span>
@endif
<span class="help-block">{{ trans('cruds.createVoucher.fields.internal_note_helper') }}</span>
</div>
<div class="form-group">
<button class="btn btn-danger" type="submit">
{{ trans('global.save') }}
</button>
</div>
</form>
</div>
</div>
</div>
</div>
@endsection