
本文旨在帮助开发者解决HTML表单提交时JavaScript函数未被调用的问题。通过分析常见的错误原因,例如拼写错误、函数调用方式不正确以及表单结构问题,提供详细的排查步骤和修正方法,确保表单提交时能够正确执行验证或其他自定义逻辑。
在开发Web应用时,经常需要在表单提交时执行一些客户端验证或预处理操作。如果绑定的JavaScript函数没有被正确调用,会导致数据验证失败或逻辑错误。以下是一些常见的导致表单提交时函数未被调用的原因以及相应的解决方案。
这是最常见的错误之一。在HTML的onsubmit事件属性中,onsumbmit 是一个拼写错误,正确的写法是 onsubmit。浏览器无法识别错误的属性名称,因此不会触发任何函数。
解决方法:
立即学习“前端免费学习笔记(深入)”;
检查HTML代码,确保onsubmit属性的拼写正确。
<form method='post' onsubmit='validateAndConfirm()'> </form>
在onsubmit属性中,需要明确地调用函数。仅仅写函数名validateAndConfirm不会执行函数,而是需要添加括号 () 来调用它。
解决方法:
确保在onsubmit属性中正确调用函数,例如 onsubmit='validateAndConfirm()'。
<form method='post' onsubmit='validateAndConfirm()'> </form>
submit 按钮必须位于 <form> 标签内部才能触发表单的提交事件。如果 submit 按钮在 <form> 标签外部,则不会触发 onsubmit 事件。
解决方法:
确保 submit 按钮位于 <form> 标签内部。
<form method='post' onsubmit='validateAndConfirm()'> <button class='center' type="submit" value='Signup'>Signup</button> </form>
onsubmit 事件可以返回 true 或 false 来控制表单是否提交。如果函数返回 false,则表单提交将被阻止。
示例代码:
function validateAndConfirm() {
// 验证逻辑
if (/* 验证失败 */) {
alert('验证失败!');
return false; // 阻止表单提交
} else {
alert('验证成功!');
return true; // 允许表单提交
}
}注意事项:
<form method='post' onsubmit='return validateAndConfirm()'> </form>
如果JavaScript代码中存在其他错误,可能会导致validateAndConfirm函数无法正常执行。
解决方法:
以下是一个完整的示例,展示了如何正确地在表单提交时调用JavaScript函数进行验证:
<!DOCTYPE html>
<html>
<head>
<title>Form Validation</title>
</head>
<body>
<div id='form' class='center text'>
<form method='post' onsubmit='return validateAndConfirm()'>
<label for="firstname">First Name:</label>
<input type="text" name="firstname" id="firstname" placeholder='Your first name...' autocomplete='given-name' required>
<br>
<label for="lastname">Last Name:</label>
<input type="text" id="lastname" name="lastname" placeholder='Your last name...' autocomplete='family-name' required>
<br>
<label for="email">Email Address:</label>
<input type="email" id="email" name="email" placeholder="your@email.com" autocomplete='off' required>
<br>
<label for="confemail">Confirm Email Address:</label>
<input type="email" id="confemail" name="confemail" placeholder="your@email.com" autocomplete='off' required>
<br>
<label for="phone">Contact Number:</label>
<input type="tel" id="phone" name="phone" pattern='[0-9]{2-3}[0-9]{2-3}[0-9]{3-4}' placeholder='000 000 0000' autocomplete='tel-national' required>
<br>
<label for="address"> Address:</label>
<input type="text" id="address" name="address" placeholder='Your address...' autocomplete='address' required>
<br>
<label for="gender"> Gender:</label>
<select name="gender" id="gender" autocomplete='gender' required>
<option value=''>Select...</option>
<option value="gen">Gender Diverse</option>
<option value="f">Female</option>
<option value="m">Male</option>
<option value="pnts">Prefer not to say</option>
</select>
<button class='center' type="submit" value='Signup'>Signup</button>
</form>
</div>
<script>
function validateAndConfirm() {
let firstname = document.getElementById('firstname').value;
let lastname = document.getElementById('lastname').value;
let email = document.getElementById('email').value;
let confemail = document.getElementById('confemail').value;
let phone = document.getElementById('phone').value;
let address = document.getElementById('address').value;
let gender = document.getElementById('gender').value;
if (email == confemail) {
alert('Your details have been submitted as below and your card will be sent out within the next 5 business days. \n First name: ' + firstname + ' \n Last name: ' + lastname + ' \n Email: ' + email + ' \n Phone ' + phone + ' \n Address: ' + address + ' \n Gender: ' + gender + '');
return true;
} else {
alert('Emails do not match, please amend and try again.');
return false;
}
}
</script>
</body>
</html>确保onsubmit属性拼写正确,函数调用方式正确,submit按钮位于<form>标签内部,以及JavaScript代码没有错误,是解决表单提交时函数未被调用的关键。通过仔细检查这些方面,可以有效地解决问题,确保表单能够按照预期的方式工作。
以上就是HTML表单提交时函数未被调用的问题排查与解决的详细内容,更多请关注php中文网其它相关文章!
HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号