Stop an input field in a form from being submitted
You could insert input fields without "name" attribute:
<input type="text" id="in-between" />
Or you could simply remove them once the form is submitted (in jQuery
):
$("form").submit(function() {
$(this).children('#in-between').remove();
});
Preventing an HTML form field from being submitted
Simply set disabled
attribute for the form field, e.g.
<input name="test" value="test" disabled="disabled">
REF: http://www.w3.org/TR/html401/interact/forms.html#h-17.12.1
Stop an input field in a form from being submitted in react-hook-form in react
You can remove those fields in handleSubmit callback:
const onSubmit = (data) => {
delete data.confirmPassword;
alert(JSON.stringify(data));
};
working example:
https://codesandbox.io/s/react-hook-form-handlesubmit-v7-uqmiy?file=/src/index.jsx:195-230
another option to use unregister:
<div>
<label htmlFor="password">Password</label>
<input type="password" {...unregister("password")} placeholder="" />
</div>
Prevent users from submitting a form by hitting Enter
You can use a method such as
$(document).ready(function() {
$(window).keydown(function(event){
if(event.keyCode == 13) {
event.preventDefault();
return false;
}
});
});
In reading the comments on the original post, to make it more usable and allow people to press Enter if they have completed all the fields:
function validationFunction() {
$('input').each(function() {
...
}
if(good) {
return true;
}
return false;
}
$(document).ready(function() {
$(window).keydown(function(event){
if( (event.keyCode == 13) && (validationFunction() == false) ) {
event.preventDefault();
return false;
}
});
});
JavaScript code to stop form submission
You can use the return value of the function to prevent the form submission
<form name="myForm" onsubmit="return validateMyForm();">
and function like
<script type="text/javascript">
function validateMyForm()
{
if(check if your conditions are not satisfying)
{
alert("validation failed false");
returnToPreviousPage();
return false;
}
alert("validations passed");
return true;
}
</script>
In case of Chrome 27.0.1453.116 m if above code does not work, please set the event handler's parameter's returnValue field to false to get it to work.
Thanks Sam for sharing information.
EDIT :
Thanks to Vikram for his workaround for if validateMyForm() returns false:
<form onsubmit="event.preventDefault(); validateMyForm();">
where validateMyForm() is a function that returns false if validation fails. The key point is to use the name event. We cannot use for e.g. e.preventDefault()
Stop form submission when using JavaScript
You don't have to return false
to stop the form from being submitted. You need to use the event's preventDefault()
method, and submit the form using JS if the data is valid. Like this:
function validateform(e) { // take the event as parameter
e.preventDefault(); // stop the submission
var cnic1 = document.getElementById("cnic1");
if (cnic1.value.length < 15) {
window.alert("Invalid CNIC");
cnic1.focus();
} else {
form.submit();
}
}
var form = document.getElementsByName('applyform')[0];
form.addEventListener('submit', validateform);
I also added the listener using JS just so you can be sure the event parameter is passed to your validation function. Remove the onsubmit="..."
from your form.
How to prevent form from being submitted?
Unlike the other answers, return false
is only part of the answer. Consider the scenario in which a JS error occurs prior to the return statement...
html
<form onsubmit="return mySubmitFunction(event)">
...
</form>
script
function mySubmitFunction()
{
someBug()
return false;
}
returning false
here won't be executed and the form will be submitted either way. You should also call preventDefault
to prevent the default form action for Ajax form submissions.
function mySubmitFunction(e) {
e.preventDefault();
someBug();
return false;
}
In this case, even with the bug the form won't submit!
Alternatively, a try...catch
block could be used.
function mySubmit(e) {
e.preventDefault();
try {
someBug();
} catch (e) {
throw new Error(e.message);
}
return false;
}
How do I stop the form submitting with invalid fields in a form?
Make isCardValid
global and add a submit
event listener on your form like this
let isCardValid = false
const cardNumberInput = document.getElementById('your-input')
const cardForm = document.getElementById('your-form')
cardNumberInput.addEventListener("keyup", e => {
isCardValid = valid_credit_card(e.target.value);
if (isCardValid) {
cardNumberInput.style.backgroundColor = "green";
} else {
cardNumberInput.style.backgroundColor = "red";
}
})
cardForm.addEventListener('submit', e => {
if(!isCardValid)
e.preventDefault()
})
And the form won't be submitted until the isCardValid
is true, if you want to submit the form manually instead of the default HTML submit behaviour, do this
yourForm.addEventListener(e => {
// To prevent default submission always.
e.preventDefault()
if(!isCardValid) return
// Do anything here...
})
Related Topics
Pass Vars to JavaScript Via the Src Attribute
Play an Audio File Using Jquery When a Button Is Clicked
How to Show a Hidden Div When a Select Option Is Selected
Html5 Dragleave Fired When Hovering a Child Element
How to Get Nth-Child Selector to Skip Hidden Divs
How to Add CSS With JavaScript
Using Async/Await With a Foreach Loop
How to Use a Variable For a Key in a JavaScript Object Literal
How to Print a Number With Commas as Thousands Separators in JavaScript
Upload Progress Indicators For Fetch
In Jquery, How to Select an Element by Its Name Attribute
React.Js: Set Innerhtml VS Dangerouslysetinnerhtml
How to Get Value of a Div Using JavaScript