Skip to content

Instantly share code, notes, and snippets.

@kkarimi
Created December 16, 2023 10:36
Show Gist options
  • Save kkarimi/f254556b917462062b6a66c0ff70f83f to your computer and use it in GitHub Desktop.
Save kkarimi/f254556b917462062b6a66c0ff70f83f to your computer and use it in GitHub Desktop.
<!--
based on Neil Browns generator here: https://github.com/neilzone/ofcom_drama_range_phone_number_generator/blob/master/index.php
-->
<!DOCTYPE html>
<html>
<head>
<title>Ofcom number generator</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<meta name="description" content="Ofcom number generator">
<meta name="format-detection" content="telephone=no" />
</head>
<body>
<form id="numberForm">
<fieldset>
<legend><h1>UK phone number generator</h1></legend>
<p>Generate a random UK phone number from <a href="https://www.ofcom.org.uk/phones-telecoms-and-internet/information-for-industry/numbering/numbers-for-drama">Ofcom's "TV and drama" range</a>.</p>
<h2>Type</h2>
<input type="radio" name="type" value="landline" checked> Landline<br>
<input type="radio" name="type" value="mobile"> Mobile<br>
<input type="radio" name="type" value="freephone"> Freephone<br>
<input type="radio" name="type" value="premium"> Premium rate services<br>
<input type="radio" name="type" value="ukwide"> UK-wide<br>
<p>
<label><h2>Region</h2></label>
<p>(only relevant if you select "landline" above)</p>
<select name="region">
<option value="donotcare">Don't care</option>
<option value="0">Leeds</option>
<!-- Add other options here -->
</select>
</p>
<input type="submit" value="Generate my number"/>
</fieldset>
</form>
<h1>Your random number:</h1>
<ul id="numberList">
<!-- Generated numbers will appear here -->
</ul>
<script>
function generateUKPhoneNumber(type, region) {
const landline = ["113 496 0", "114 496 0", "115 496 0", "116 496 0", "117 496 0", "118 496 0", "121 496 0", "131 496 0", "141 496 0", "151 496 0", "161 496 0", "20 7946 0", "191 498 0", "28 9649 6", "29 2018 0", "1632 960"];
const mobile = "7700 900";
const freephone = "8081 570";
const premium = "909 8790";
const ukwide = "3069 990";
// Dummy values for type and region, replace with actual logic to determine these values
// let type = "landline"; // Example, you can set this based on your application's needs
// let region = "donotcare"; // Example, you can set this based on your application's needs
let region_number;
if (type === "mobile") {
region_number = mobile;
} else if (type === "freephone") {
region_number = freephone;
} else if (type === "premium") {
region_number = premium;
} else if (type === "ukwide") {
region_number = ukwide;
} else {
if (region === "donotcare") {
const region_rand = Math.floor(Math.random() * landline.length);
region_number = landline[region_rand];
} else {
region_number = landline[region];
}
}
const extension = Math.floor(Math.random() * 900) + 100;
const finalnumber_IDC = "+44 " + region_number + extension;
const finalnumber_noIDC = "0" + region_number + extension;
const finalnumber_invalid = "+44(0)" + region_number + extension;
return {
international: finalnumber_IDC,
national: finalnumber_noIDC,
invalid: finalnumber_invalid
};
}
// Example usage
//const generatedNumber = generateUKPhoneNumber();
//console.log(generatedNumber);
document.getElementById('numberForm').addEventListener('submit', function(event) {
event.preventDefault();
generateNumber();
});
function generateNumber() {
var form = document.forms['numberForm'];
var type = form.elements['type'].value;
var region = form.elements['region'].value;
// Define your number arrays and logic here similar to the PHP script
// Example:
// var landline = ["113 496 0", "114 496 0", ...];
// Logic to generate the number based on type and region
const result = generateUKPhoneNumber(type, region)
const { national, invalid, international } = result;
// Display the results
document.getElementById('numberList').innerHTML =
'<li> international ' + `(${international})` + '</li>' +
'<li> national '+ ` (${national} only) ` + '</li>' +
'<li> invalid '+ ` (${invalid} / non-diallable)` + '</li>';
}
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment