'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">&times;</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