API lookup
unknown
javascript
a year ago
6.7 kB
4
Indexable
jQuery(document).ready(function ($) { const apiUrl = 'https://uk1.ukvehicledata.co.uk/api/datapackage/VehicleData?v=2&api_nullitems=1&auth_apikey='; const apiKey = 'ebae681d-26b5-4244-95c5-e3fd94505297'; const loader = $('#loader'); // Flag to check if VRM has passed real-time validation let vrmValidated = false; // Real-time validation for VRM as the user types $('[name="my-vrm"]').on('input', function () { const vrm = $(this).val().toUpperCase(); const vrmRegex = /^(^[A-Z]{2}[0-9]{2}s?[A-Z]{3}$)|(^[A-Z][0-9]{1,3}[A-Z]{3}$)|(^[A-Z]{3}[0-9]{1,3}[A-Z]$)|(^[0-9]{1,4}[A-Z]{1,2}$)|(^[0-9]{1,3}[A-Z]{1,3}$)|(^[A-Z]{1,2}[0-9]{1,4}$)|(^[A-Z]{1,3}[0-9]{1,3}$)|(^[A-Z]{1,3}[0-9]{1,4}$)|(^[0-9]{3}[DX]{1}[0-9]{3}$)/; const errorContainer = $('#vrm-error'); if (!vrm || !vrmRegex.test(vrm)) { // Display error message errorContainer.text('Please enter a valid UK Vehicle Registration Number.').show(); vrmValidated = false; } else { errorContainer.hide(); vrmValidated = true; } }); // Real-time validation for name as the user types $('#my-name').on('input', function () { const name = $(this).val(); const errorContainer = $('#name-error'); if (!name) { // Display error message errorContainer.text('Please enter your name.').show(); } else { errorContainer.hide(); } }); // Real-time validation for email as the user types $('[name="my-email"]').on('input', function () { const email = $(this).val(); const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/; const errorContainer = $('#email-error'); if (!email || !emailRegex.test(email)) { // Display error message errorContainer.text('Please enter a valid email address.').show(); } else { errorContainer.hide(); } }); // Real-time validation for phone number as the user types $('#my-phone').on('input', function () { const phoneNumber = $(this).val(); const phoneNumberRegex = /^s*(+44s?|0)?(?:(d{4})|d{4})s?d{3}s?d{3}s*$/; const errorContainer = $('#phone-error'); if (!phoneNumber || !phoneNumberRegex.test(phoneNumber)) { // Display error message errorContainer.text('Please enter a valid UK phone number.').show(); } else { errorContainer.hide(); } }); function handleGetQuote(e) { e.preventDefault(); // Validate VRM before proceeding if (!vrmValidated) { // Display error message $('#vrm-error').text('Please enter a valid UK Vehicle Registration Number.').show(); return; } const vrm = $('[name="my-vrm"]').val().toUpperCase(); showLoader(true); fetchVehicleData(apiUrl, apiKey, vrm); } function fetchVehicleData(apiUrl, apiKey, vrm) { $.ajax({ url: `${apiUrl}${apiKey}&user_tag=&key_VRM=${vrm}`, method: 'GET', dataType: 'json', success: handleVehicleDataSuccess, error: handleVehicleDataError, complete: function () { showLoader(false); }, }); } function handleVehicleDataSuccess(data) { const make = data.Response.DataItems.ClassificationDetails.Dvla.Make; const model = data.Response.DataItems.ClassificationDetails.Dvla.Model; const weight = data.Response.DataItems.TechnicalDetails.Dimensions.KerbWeight; const fuelTankCapacity = data.Response.DataItems.TechnicalDetails.Dimensions.FuelTankCapacity; const colour = data.Response.DataItems.VehicleRegistration.Colour; const fuelType = data.Response.DataItems.SmmtDetails.FuelType; calculateAndPopulateFields(make, model, weight, fuelTankCapacity, colour, fuelType); showHideParts('#part-2', '#part-1'); } function handleVehicleDataError(error) { console.error('Error occurred while fetching vehicle data:', error); // Provide user-friendly error message on the webpage } function calculateAndPopulateFields(make, model, weight, fuelTankCapacity, colour, fuelType) { const convertedWeight = weight / 1000; const valuationRate = 150; const valuation = Math.round(convertedWeight * valuationRate); $('#vehicle-make').val(make); $('#vehicle-model').val(model); $('#vehicle-valuation').val(valuation); $('#vehicle-wieght').val(weight); $('#vehicle-fueltype').val(fuelTankCapacity); $('#vehicle-colour').val(colour); $('#vehicle-fuelType').val(fuelType); $('#make').text(make); $('#model').text(model); $('#valuation').text(valuation); $('#weight').text(weight); $('#fueltype').text(fuelType); $('#colour').text(colour); $('#fueltankcapacity').text(fuelTankCapacity); } function showHideParts(showPart, hidePart) { $(hidePart).fadeOut(300, function () { $(showPart).fadeIn(300); }); } function showLoader(show) { if (show) { loader.show(); } else { loader.hide(); } } $('#get-quote').click(handleGetQuote); $('#accept-quote').click(function (e) { e.preventDefault(); showHideParts('#part-3', '#part-2'); }); $('#submit-button').click(function (e) { // Validate name, email, and phone number before proceeding const name = $('#my-name').val(); const email = $('#my-email').val(); const phone = $('#my-phone').val(); if (!name) { $('#name-error').text('Please enter your name.').show(); return; } else { $('#name-error').hide(); } const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/; if (!email || !emailRegex.test(email)) { $('#email-error').text('Please enter a valid email address.').show(); return; } else { $('#email-error').hide(); } const phoneRegex = /^s*(+44s?|0)?(?:(d{4})|d{4})s?d{3}s?d{3}s*$/; if (!phone || !phoneRegex.test(phone)) { $('#phone-error').text('Please enter a valid UK phone number.').show(); return; } else { $('#phone-error').hide(); } // If all validations pass, proceed with the submission showHideParts('#part-4', '#part-3'); }); });
Editor is loading...
Leave a Comment