基于表单字段的不同页面
Different Pages Based On Form Fields
我有一个表单,我想根据我根据状态表单字段选择的内容重定向到不同的页面。
<form action="capture.php" method="post">
<input type="text" name="_FirstName" required/>
<input type="text" name="_LastName" required/>
<input type="tel" id="phone" name="_Phone" required/>
<input type="email" name="Email" required/>
<select name="_State" id="state" required>
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="DC">District of Columbia</option>
<option value="FL">Florida</option>
</select>
<input id="submit" type="submit">
</form>
这是我基于这篇文章使用的JavaScript代码。 问题是无论我选择什么状态选项,我都会直接进入"捕获.php"页面。
<script type="text/javascript">
function submit {
if(document.getElementById('state').value == 'AZ' ||
document.getElementById('state').value == 'AR' ||
document.getElementById('state').value == 'CA') ||
document.getElementById('state').value == 'CO') ||
document.getElementById('state').value == 'CT')
{
window.location.href == "warranty.php";
}
else
{
window.location.href == "capture.php";
}
</script>
有什么想法吗?谢谢!
编辑:JavaScript代码应该在html页面的标题中吗?
不要设置window.location.href
而是尝试设置窗体的 action 属性。
document.getElementById("myForm").action = "form_action.asp";
- http://www.w3schools.com/jsref/prop_form_action.asp
您的submit()
函数中有一些语法错误:
- 您缺少函数的
()
。 - 有一些额外的括号
'CO')
或'CA')
。 - 对窗口使用单个 = 符号。位置
修改功能:
<script type="text/javascript">
function submit() {
if(document.getElementById('state').value == 'AZ'
|| document.getElementById('state').value == 'AR'
|| document.getElementById('state').value == 'CA'
|| document.getElementById('state').value == 'CO'
|| document.getElementById('state').value == 'CT')
{
window.location.href = "warranty.php";
}
else
{
window.location.href = "capture.php";
}
}
</script>
旁注:
您还可以使用window.open
,例如:
window.open('capture.php');
问题是没有
任何东西将表单提交链接到JavaScript函数。因此,当您验证表单时,它会直接转到"action"属性中提供的地址。
简单的解决方案
将按钮的标记更改为此按钮,因此单击将链接到函数调用:
<input id="submit" type="submit" onclick="submit()">
使用 Jquery :
将 jQuery 与您的页面一起加载,并在表单中添加一个 ID,如下所示:
<form id="myform" action="capture.php" method="post">
在文档中添加此代码:
$(document).ready(function() {
$('#myform').submit(function(e) {
e.preventDefault(); // this prevent the form from going to capture.php
submit();
return false;
});
});
你的代码中有几个错误,例如:
-
两个等号
==
用于比较,而不是用于值分配。 -
select
标签不是自闭标签,所以你最好在最后删除/
:<select name="_State" id="state" required/> _________________________________________^
-
一些额外的括号
(
您的状况。 -
函数声明中缺少括号。
然后我看不出你在哪里打电话给submit()
.
IMO附加submit
事件会更好,单击提交按钮后更改操作,然后以编程方式提交表单:
$('form').on('submit', function(e){
if(document.getElementById('state').value == 'AZ' ||
document.getElementById('state').value == 'AR' ||
document.getElementById('state').value == 'CA' ||
document.getElementById('state').value == 'CO' ||
document.getElementById('state').value == 'CT')
{
$('form').prop('action', "warranty.php");
}
else
{
$('form').prop('action', "capture.php");
}
return true;
});
希望这有帮助。
相关文章:
- IE11在使用JQuery$(..).val(“”)清除具有5个或更多字段的表单时崩溃
- 即使对于非空窗体,FormData对象也返回空.对于具有2个输入字段的表单,
- 通过电子邮件发送表单通过javascript提交字段发送表单
- Angular2-对有条件创建的输入字段进行表单验证
- 添加带有选择选项字段的表单
- 验证数组文件字段的表单提交
- 如何禁用除提交按钮以外的所有字段的表单提交
- 通过电子邮件提交带有动态字段的表单
- 当所有表单具有相同的名称和 id 时,选择焦点字段的表单
- 根据所选输入值更改输入字段的表单
- 验证包含日期和时间字段的表单,这些字段必须共同描述将来的日期和时间
- 通过 AJAX 方法提交更改选择字段的表单
- 我的 JavaScript 需要什么条件?它是一个弹出一个对话框的脚本,其中包含字段的表单验证备注留空
- 包含多个文件和其他输入字段的表单验证
- 为virtualmart中所需的输入字段添加表单中的星号
- 如何获得一个带有用ng repeat构建的字段的表单来传递数据
- 如何序列化包含jQueryajax加载字段的表单
- 如何创建一个只有一个提交按钮的具有三个文本输入字段的表单
- 在 angularjs 中,如何提交带有禁用字段的表单
- 适用于Chrome,但不适用于Safari——这是一个隐藏的DIV,只在提交带有所有必需字段的表单时显示