Have an idea?

Visit Sawtooth Software Feedback to share your ideas on how we can improve our products.

Page submits automatically when it shouldn't

Hi everyone,

I have a page with a Text only question where I want respondents to copy a certain code to their clipboard (see code below, credits to https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_copy_clipboard2). This works, but as soon as I click the button, the page submits automatically.

How can I prevent this from happening?

<input id="myInput" type="text" value="I want to be copied!" style="width: fit-content;">

<div class="tooltip">
<button onclick="myFunction()" onmouseout="outFunc()">
  <span class="tooltiptext" id="myTooltip">Copy to clipboard</span>
  Copy
  </button>
</div>
<br><br>

<script>
function myFunction() {
  var copyText = document.getElementById("myInput");
  copyText.select();
  copyText.setSelectionRange(0, 99999);
  document.execCommand("copy");
  
  var tooltip = document.getElementById("myTooltip");
  tooltip.innerHTML = "Copied: " + copyText.value;
}

function outFunc() {
  var tooltip = document.getElementById("myTooltip");
  tooltip.innerHTML = "Copy to clipboard";
}
</script>
<style>
.tooltip {
  position: relative;
  display: inline-block;
}

.tooltip .tooltiptext {
  visibility: hidden;
  width: 140px;
  background-color: #555;
  color: #fff;
  text-align: center;
  border-radius: 6px;
  padding: 5px;
  position: absolute;
  z-index: 1;
  bottom: 150%;
  left: 50%;
  margin-left: -75px;
  opacity: 0;
  transition: opacity 0.3s;
}

.tooltip .tooltiptext::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: #555 transparent transparent transparent;
}

.tooltip:hover .tooltiptext {
  visibility: visible;
  opacity: 1;
}
</style>


I'm using Lighthouse 9.10.
asked Apr 14 by Kathrin (255 points)

1 Answer

+2 votes
When buttons appear on web forms (such as the form automatically generated by Lighthouse Studio), they default to type=submit, which causes the page to submit upon click.  To fix this, we just need to explicitly set the type attribute like this:

<button type="button">Click me</button>
answered Apr 14 by Zachary Platinum Sawtooth Software, Inc. (171,950 points)
...