【发布时间】:2014-09-11 03:07:35
【问题描述】:
作为我的第一个 JavaScript 项目,我编写了一个包含表单的大页面。我在这里得到了一些帮助,所以谢谢。我对目前所拥有的一切感到非常满意,但我还有最后一个问题需要解决。
我将在这里提交的代码是一个测试器。我有几个附加到 onClick 新窗口的功能。发生的情况是用户提交表单并且他们的信息出现在新窗口中。 (当然,我的原始页面更复杂。)如果为“状态”输入了特定值,则有一个名为 askForHelp 的函数会在新窗口中显示警报,还有一个非常简单的 validateForm 会在父级上显示警报?如果值留空,则窗口。
问题是 b/c 我的所有功能都在 onClick 上运行,我意识到它们同时运行,无论用户做什么,新窗口都会打开(警报显示在各个位置)。
基于此处的其他类似问题,我尝试在条件句中添加 return false 和 return true 语句,但这没有做任何事情。
现在我知道有更好的方法来做我正在做的事情,而且我的表单验证是基本的和薄弱的,但作为我第一次涉足编程,了解我所做的一切对我来说非常重要,到目前为止,我就是这样做的。
谁能告诉我如何解决这个问题,以便只有在表单验证时才会打开新窗口?如果可能的话,我宁愿没有 jquery 或没有激进的机会来编写代码。
感谢大家的意见。代码如下:
<!doctype html>
<html>
<head>
<title>test</title>
<meta charset="utf-8">
<script type="text/javascript">
function newWindow() {
allInfo= open("", "displayWindow");
allInfo.document.open();
allInfo.document.write('<!doctype html><html><head><title>Test</title><meta charset="utf-8"></head><body>');
allInfo.document.write(document.getElementById ('state').value);
allInfo.document.write('<p>' + document.getElementById ('zip').value);
allInfo.document.write('</section></body></html>');
allInfo.document.close();
}
function askForHelp () {
var volunteer = document.getElementById('state').value;
if ((volunteer == "New York") || (volunteer == "NY") || (volunteer == "New Jersey") || (volunteer == "NJ")) {
allInfo.alert("test test test");
return false;
}
else {
return true;
}
}
function validateForm () {
var x = document.getElementById("state").value;
var y = document.getElementById("zip").value;
if (x == null || x == "" || y == null || y == "") {
alert("Please fill out the required fields.");
return false;
}
else {
return true;
}
}
</script>
</head>
<body>
<script type="text/javascript">
</script>
<form id="infoForm" method="post" name="infoForm">
<p>State: </p>
<p><input type="text" id="state" placeholder="State or Region"></p>
<p>Zip: </p>
<p><input type="text" id="zip" placeholder="Zip code" required /></p>
<p><input type="button" value="Submit Information" onClick="newWindow(), askForHelp(), validateForm()" ></p>
</form>
</body>
</html>
【问题讨论】:
-
你能格式化你的代码吗?像这样读起来很难。
-
我尝试更好地格式化它。在下面得到了一个非常适合我想要的答案。
标签: javascript forms new-window