您要查找的基本事件是表单的submit 事件。如果您可以只使用事件处理程序,则可以执行以下操作:
var myForm = document.getElementById('myForm');
myForm.onsubmit = function () {
// ...
};
因为您只是使用 JavaScript,所以您不希望表单实际提交。 (旁白:因为您使用的是 JS,所以您应该只构建此表单并将其添加到页面 with JS,但这是一个完全不同的问题。)您可以像这样取消表单的默认操作:
myForm.onsubmit = function () {
// ...
return false;
};
在我们开始访问数据之前,请确保您获取了您将需要的元素。它使事情变得更快,因为您不必每次提交表单时都从 DOM 中选择整个元素。例如:
var myForm = document.getElementById('myForm'),
myTextField = document.getElementById('myTextField'),
mySelectBox = document.getElementById('mySelectBox'),
// ...
根据您拥有的表单元素的类型,访问其数据的方式也不同。文本输入、文本区域和选择框真的很简单:
var textValue = myTextField.value,
selectValue = mySelectBox.value;
单选按钮和复选框有点复杂,因为您必须逐个查看,查看哪些是/已选中,哪些不是/未选中,就像这样:
var isOneChecked = checkboxOne.checked,
isTwoChecked = checkboxTwo.checked;
以你的蓝色/粉红色背景为例,你可能想要类似这样的东西:
var myForm = document.getElementById('myForm'),
maleBox = document.getElementById('maleBox');
myForm.onsubmit = function () {
var isMale = maleBox.checked;
if (isMale) {
document.body.style.backgroundColor = 'manlyBlue';
} else {
document.body.style.backgroundColor = 'sexistPink';
}
};
备注
如果您确实决定使用事件处理程序,请记住一次只能将一个应用于您的表单。如果您还想为 submit 事件附加不同的功能,则必须使用事件 listeners,这是一个完全不同的球类游戏,并且会引入自己的问题。
最后一个示例只检查“I'm a guy”元素的值,因为(可能)您正在使用单选按钮并且只有两个选项。如果“我是一个男人”没有被选中,那么另一个应该是。但是如果表单开始时 没有 选项被选中,那么这可能被认为是一个错误。
最后一个示例还使用内联样式来更改正文的背景颜色。打字让我很痛苦。一个更容易接受的方法是根据需要添加/删除类,但同样,这超出了这个问题的范围。