如何使用 preventDefault 重写而不是返回 false
How to rewrite using preventDefault instead of return false?
只是为了让我更好地理解如何编写 preventDefault 而不是返回 false。 下面是返回 false 的示例。 我想使用 preventDefault 重写此代码
我的网页:
<form name="myForm" action="formPracticePHP.php" method="post" onsubmit="return validateForm()">
<p>Enter your Name: <input type="text" name="name" value="" placeholder="[your-name]" required="required" /><br /></p>
<p>Enter your Age: <input type="number" name="age" size="6" value="" /><br /></p>
<p>Please Select Your Favorite Fruit</p>
<select name="fruit" id="fruit">
<option value="nothing" selected="selected">Select A Fruit</option>
<option value="Bannana">Bannana</option>
<option value="Kiwi">Kiwi</option>
<option value="Mango">Mango</option>
<option value="Apple">Apple</option>
<option value="Cherry">Cherry</option>
</select>
<input type="submit" name="submit" value="submit" id="submitBtn" />
</form>
我的JavaScript
function validateForm() {
var x = document.forms["myForm"]["age"].value;
var x2 = document.forms["myForm"]["fruit"].value;
if ((x==null || x=="") || (x2 == null || x2=="nothing")) {
alert("Age and fruit selection must be filled out");
return false;
}
}
您必须将event
参数传递给处理程序
<form onsubmit="validateForm(event)" >
并更改您的功能
function validateForm(e) {
var x = document.forms["myForm"]["age"].value;
var x2 = document.forms["myForm"]["fruit"].value;
if ((x==null || x=="") || (x2 == null || x2=="nothing")) {
e.preventDefault();
alert("Age and fruit selection must be filled out");
}
}
如果您从 JavaScript 设置处理程序,上面的相同功能也可以工作。
假设validateForm
已注册为表单的onsubmit
处理程序,您应该能够执行以下操作:
function validateForm(e) {
var x = document.forms["myForm"]["age"].value;
var x2 = document.forms["myForm"]["fruit"].value;
if ((x==null || x=="") || (x2 == null || x2=="nothing")) {
alert("Age and fruit selection must be filled out");
e.preventDefault(); // here
}
}
如果您在 HTML 中使用 onsubmit
属性来执行此操作,则可以删除return
部分,并且需要将事件传递给它:
onsubmit="validateForm(event)"
但是,我强烈建议不要使用 HTML 属性来指定事件处理程序,而是使用 JavaScript 代码注册处理程序:
window.onload = function () {
document.forms["myForm"].addEventListener("onsubmit", validateForm);
};
相关文章:
- Array.every返回false,而不是类型error
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 为什么当我在数组上测试regex时,它会返回false
- 检查文本区域是否为空总是返回false
- PHP strtotime()为JavaScript日期字符串返回false
- onsubmit返回false,但submit仍然执行
- 这个代码会返回false吗
- Ajax向表单返回false
- 表单验证JavaScript编号总是返回false
- 使用!而in运算符在应该为true时返回false,为什么
- jQuery.is(':checked')总是返回false
- Javascript 下划线每个总是返回 false
- 提交返回 false 总是在 jquery 中
- 为什么 1.2 == true 返回 false 如果布尔值 (1.2) 实际上是真的
- 如果循环中至少有一个元素返回 false,如何将变量设置为 false
- 基本JavaScript不断返回false
- 布尔对象上的逻辑 NOT 在 Javascript 中总是返回 false
- jquery focusin没有'调用.focus()并返回false;时无效;
- Ajax-执行成功前返回false
- jQuery JSON flickr提要返回false不工作