<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>IPAM</title> <script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.4/dist/semantic.min.css"> <script src="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.4/dist/semantic.min.js"></script> <style> .ui.form input[type="number"].textfield { appearance: textfield; } .ui.form input[type="number"].textfield ::-webkit-inner-spin-button, .ui.form input[type="number"].textfield ::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; } .ui.input.address input { text-align: right; } .address :not(:first-child):not(:last-child) { border-radius: 0 !important; } .address :first-child { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; } .address :last-child { border-top-left-radius: 0 !important; border-bottom-left-radius: 0 !important; } </style> </head> <body> <main class="ui container"> <div class="ui segment"> <form action="add-network.php" method="post" class="ui form"> <div class="field"> <label for="name">Nom</label> <input type="text" id="name" name="name"> </div> <div class="fields"> <div class="field"> <label for="address">Adresse</label> <div class="ui labeled address input"> <input type="number" id="octet1Input" min="0" max="255" step="1" required class="textfield"> <div class="ui label">.</div> <input type="number" id="octet2Input" min="0" max="255" step="1" required class="textfield"> <div class="ui label">.</div> <input type="number" id="octet3Input" min="0" max="255" step="1" required class="textfield"> <div class="ui label">.</div> <input type="number" id="octet4Input" min="0" max="255" step="1" required class="textfield"> </div> </div> <input type="hidden" id="addressInput" name="address"> <div class="field"> <label>Masque</label> <div class="ui labeled input"> <div class="ui label">/</div> <input type="number" id="maskInput" name="mask" min="0" max="32" step="1" required class="textfield" title="Masque au format CIDR"> </div> </div> <script> let otctetInputs = [octet1Input, octet2Input, octet3Input, octet4Input] console.log(otctetInputs.forEach) otctetInputs.forEach(input => { input.oninput = () => { o1 = octet1Input.valueAsNumber || 0; o2 = octet2Input.valueAsNumber || 0; o3 = octet3Input.valueAsNumber || 0; o4 = octet4Input.valueAsNumber || 0; addressInput.value = ((o1 << 24) | (o2 << 16) | (o3 << 8) | o4) >>> 0 } input.onfocus = () => { input.select(); } }); [octet1Input, octet2Input, octet3Input].forEach((input, index) => { input.onkeydown = function (event) { if (event.key == ".") { event.preventDefault(); otctetInputs[index + 1].focus() } } }) octet4Input.onkeydown = function (event) { if (event.key == "/") { event.preventDefault(); maskInput.focus() } } </script> </div> <button type="submit" class="ui button">Ajouter</button> </form> </div> </main> </body> </html>