'How to pop up a three button dialog without using jquery?
I am currently trying to pop up a dialog with three buttons not using jquery? I know js can only have two button dialog (confirm). But wondering if there is a work-around? If yes, how? Thanks in advance.
Solution 1:[1]
You would need to use a Modal Dialog. This can be created with vanilla JS. I borrowed some code from w3schools (https://www.w3schools.com/howto/howto_css_modals.asp) -- pretty much all of it -- for my example. Their example provides the code for a modal window. I've modified it to have 3 buttons and added an 'onclick' event handler that triggers an alert box showing the value.
// Get the modal
var modal = document.getElementById('myModal');
// Get the button that opens the modal
var btn = document.getElementById("myBtn");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];
// When the user clicks on the button, open the modal
btn.onclick = function() {
modal.style.display = "block";
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
} <
/script>
<
script >
// Add an 'onclick' handler to alert the value of the button clicked.
document.querySelectorAll('.option_button').forEach(function(optionButton) {
optionButton.onclick = function() {
window.alert(optionButton.value)
}
});
/* The Modal (background) */
.modal {
display: none;
/* Hidden by default */
position: fixed;
/* Stay in place */
z-index: 1;
/* Sit on top */
left: 0;
top: 0;
width: 100%;
/* Full width */
height: 100%;
/* Full height */
overflow: auto;
/* Enable scroll if needed */
background-color: rgb(0, 0, 0);
/* Fallback color */
background-color: rgba(0, 0, 0, 0.4);
/* Black w/ opacity */
}
/* Modal Content/Box */
.modal-content {
background-color: #fefefe;
margin: 15% auto;
/* 15% from the top and centered */
padding: 20px;
border: 1px solid #888;
width: 50%;
text-align: center;
/* Could be more or less, depending on screen size */
}
/* The Close Button */
.close {
color: #aaa;
float: right;
font-size: 28px;
font-weight: bold;
}
.close:hover,
.close:focus {
color: black;
text-decoration: none;
cursor: pointer;
}
<body>
<!-- Trigger/Open The Modal -->
<button id="myBtn">Open Modal</button>
<!-- The Modal -->
<div id="myModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<span class="close">×</span>
<p>Click a button...</p>
<button value=1 class="option_button">Option 1</button>
<button value=2 class="option_button">Option 2</button>
<button value=3 class="option_button">Option 3</button>
</div>
</div>
</body>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | xxx |