I have a registration form in HTML, which I have attached below.
<form id="registerForm">
<input type="text" pattern="[A-Za-z]{1,20}" placeholder="First Name" name="guestFName" title="Up to 20 alphabetical characters" required>
<input type="text" pattern="[A-Za-z]{1,20}" placeholder="Last Name" name="guestLName" title="Up to 20 alphabetical characters" required>
<input type="email" placeholder="Email" name="guestEmail" title="Must be a valid email address" required>
<input type="text" pattern="08[36579]-\d{7}" placeholder="Phone Number" name="guestPhone" title="Must be an irish mobile number of format 08?-7 digits" required>
<input type="password" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}" placeholder="Password" name="guestPassword" title="Must be 8 or more characters long and contain at least one number and one uppercase letter" required>
<br>
<button id="myButton">Register</button>
</form>
I am trying to post the information from the form when someone fills it out to a python API which will then insert the information to a MySQL Database.
I want the functionality of the required and patterns in the HTML.
I am using jQuery 3.1.1 and Ajax to post the form data to the API.
My JQuery/Ajax is attached below:
$("#registerForm").submit(function()
{
$.ajax(
{
url: "URL_GOES_HERE",
data: $('#registerForm').serialize(),
type: 'POST',
async: false
})
.done(function(response)
{
console.log(response);
var result = JSON.parse(response);
})
});
I think this should work however if I fill out the form and click the Register Button it reloads the page and just adds the form information to the URL.
An example of this is :
URL_GOES_HERE/register.html?guestFName=Joe&guestLName=Bloggs&guestEmail=bloggs%40gmail.com&guestPhone=087-1111111&guestPassword=TestPassword1
Why is this behaving like this?
All help is extremely appreciated
EDIT: e.preventDefault(); doesn't fix the issue.
I think you should use <input type='button'>
instead <button>
and just use .click()
event of that <input type='button'>
as below.
Change
<button id="myButton">Register</button>
To
<input type='button' id='btnRegeister' value='Register'/>
And in JS
Change
$("#registerForm").submit(function()
To
$("#btnRegeister").click(function()
So your entire code become as below now ..
<form id="registerForm">
<input type="text" pattern="[A-Za-z]{1,20}" placeholder="First Name" name="guestFName" title="Up to 20 alphabetical characters" required>
<input type="text" pattern="[A-Za-z]{1,20}" placeholder="Last Name" name="guestLName" title="Up to 20 alphabetical characters" required>
<input type="email" placeholder="Email" name="guestEmail" title="Must be a valid email address" required>
<input type="text" pattern="08[36579]-\d{7}" placeholder="Phone Number" name="guestPhone" title="Must be an irish mobile number of format 08?-7 digits" required>
<input type="password" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}" placeholder="Password" name="guestPassword" title="Must be 8 or more characters long and contain at least one number and one uppercase letter" required>
<br>
<input type='button' id='btnRegeister' value='Register'/>
</form>
$(document).ready(function(){
$("#btnRegeister").click(function()
{
$.ajax(
{
url: "URL_GOES_HERE",
data: $('#registerForm').serialize(),
type: 'POST',
async: false
})
.done(function(response)
{
console.log(response);
var result = JSON.parse(response);
})
});
});
Try Above code, it is working for me
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With