Reputation: 39
I am continuing with the development of a basic website where the user enters a string of at least 256 characters minimum, selects a choice (ASCII or EBCDIC) for conversion, and then hits the submit button (Run) that outputs the final converted result on the page, displaying all the ASCII or EBCDIC values of the string they entered. I have trouble getting the website to convert the entered text to ASCII or EBCDIC values based on the selected radio button. Below is the code I have:
1.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Converter for ASCII or EBCDIC</title>
<link href="style.css" rel="stylesheet" type="text/css"/>
<script src="encoding.js" defer></script>
</head>
<body style="text-align:center;">
<label for="text">Enter a text that is at least 256 characters long</label><br>
<input type="text" id="text_id" name="text" minlength="256">
<p>Select the following:</p>
<div>
<input id="ascii" type="radio" name="encoding" value="ascii">
<label for="ascii">ASCII</label>
</div>
<div>
<input id="ebcdic" type="radio" name="encoding" value="ebcdic">
<label for="ebcdic">EBCDIC</label>
</div>
<button onclick="myFunction()" type="button">"Run!"</button>
<label for="button">"Run!"</label>
<p id="demo" style="color:red;">
</body>
</html>
style.css:
body
{
font: 12pt Arial;
}
input[type=radio] + label::before
{
border-radius: 10px;
}
input {
border: 2px solid currentcolor;
}
input:invalid {
border: 2px dashed red;
}
input:invalid:focus {
background-image: linear-gradient(pink, lightgreen);
}
encod
encoding.js:
function myFunction()
{
let str = document.getElementById("text_id");
let a = "ASCII Code is == > ";
// Below checks to see if the user selects a radio button
let radio_selected = false;
document.querySelectorAll('input[type="radio"]').forEach(function(radio)
{
if (radio.checked)
{
radio_selected = true;
}
})
if (!radio_selected)
{
console.log("The radio has not been checked, please select a button");
return;
}
if (str.value.length >= 256)
{
//loop that checks the entire string the user has entered and prints all converted values
for (let i = 0; i < str.length; i++)
{
document.getElementById("demo").innerHTML = document.getElementById("demo").innerHTML + a + str.value.charCodeAt(i);
}
}
else if (str.value.length < 256)
{
console.log("null");
return null;
// prints and returns null if the user entered a string less than 256 characters
}
document.getElementById("demo").innerHTML = document.getElementById("demo").innerHTML + a + str.value.charCodeAt(i);
}
The input validation (at least 256 characters) and button selection validation (user needs to select button) has been done, however, the conversion of the entered value based on the selected button and the output of all the characters in ASCII or EBCDIC is where I am confused.
Upvotes: 0
Views: 186
Reputation: 136
You can check if the buttons are selected doing the following
function myFunction() {
//Get both elements
const ascii = document.getElementById('ascii')
const ebcdic = document.getElementById('ebcdic')
let str = document.getElementById("text_id");
let a = "ASCII Code is == > ";
// Below checks to see if the user selects writed more than 255 chars
if (str.value.length < 256) {
console.log("null");
return null;
// prints and returns null if the user entered a string less than 256 characters
}
// Below checks to see if the user selects a radio button
let radio_selected = false;
document.querySelectorAll('input[type="radio"]').forEach(function (radio) {
if (radio.checked) {
radio_selected = true;
}
})
if (!radio_selected) {
console.log("The radio has not been checked, please select a button");
return;
}
//If one of the elements is checked it triggers a condition, if the other is cheked it triggers the other condition
if (ascii.checked) {
for (let i = 0; i < str.value.length; i++) {
document.getElementById("demo").innerHTML = document.getElementById("demo").innerHTML + str.value.charCodeAt(i);
}
}
else if (ebcdic) {
//function to convert to ebcdic, (I do not know how to do this)
}
}
Upvotes: 1