javascript和html表单
我有一个使用HTML验证的表单,我有两个函数,其中一个可以访问表单,另一个不能 这是我的表格:javascript和html表单,javascript,html,Javascript,Html,我有一个使用HTML验证的表单,我有两个函数,其中一个可以访问表单,另一个不能 这是我的表格: <form id="contactForm" action="javascript:submitForm()" method="post"> <table align="center"> <tr> <th>Name:</th> <td><input ty
<form id="contactForm" action="javascript:submitForm()" method="post">
<table align="center">
<tr>
<th>Name:</th>
<td><input type="text" id="name" name="name" value="a" /></td>
</tr>
<tr>
<th>email:</th>
<td><input type="text" id="email" name="email" value="sikas@sikas.x10.mx" /></td>
</tr>
<tr>
<th>Message:</th>
<td><textarea type="text" id="message" name="message">msg</textarea></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Login" /></td>
</tr>
</table>
</form>
姓名:
电邮:
信息:
味精
这是我的脚本,分为两部分,一部分在同一个文件中,另一部分在另一个文件中:
这是表格的一部分:
<script type="text/javascript">
function check()
{
name = document.getElementById('name').value;
email = document.getElementById('email').value;
message = document.getElementById('message').value;
if(name.length == 0 || email.length == 0 || message.length == 0)
{
alert("Name Required\nEmail Required\nMessage Required");
return false;
}
else
{
var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
var address = email;
if(reg.test(address) == false)
{
alert("Email Invalid");
return false;
}
}
return true;
}
var form;
function submitForm()
{
if(check() == false)
return false;
else
{
form = document.getElementById('contactForm').innerHTML;
document.getElementById('contactForm').innerHTML = "<h3>Sending ...</h3>";
send();
setTimeout("restoreForm()",1000);
}
return false;
}
function restoreForm()
{
document.getElementById('contactForm').innerHTML = form;
}
</script>
函数检查()
{
name=document.getElementById('name')。值;
email=document.getElementById('email')。值;
message=document.getElementById('message')。值;
如果(name.length==0 | | | email.length==0 | | | message.length==0)
{
警报(“需要名称\n需要电子邮件\n需要消息”);
返回false;
}
其他的
{
变量reg=/^([A-Za-z0-9\-\.])+\@([A-Za-z0-9\-\.])+\.([A-Za-z]{2,4})$/;
var地址=电子邮件;
如果(注册测试(地址)=错误)
{
警报(“电子邮件无效”);
返回false;
}
}
返回true;
}
var形式;
函数submitForm()
{
如果(检查()==false)
返回false;
其他的
{
form=document.getElementById('contactForm').innerHTML;
document.getElementById('contactForm').innerHTML=“发送…”;
send();
setTimeout(“restoreForm()”,1000);
}
返回false;
}
函数restoreForm()
{
document.getElementById('contactForm')。innerHTML=form;
}
这在文件中:
// JavaScript Document
function createObject()
{
var request_type;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer")
{
request_type = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
request_type = new XMLHttpRequest();
}
return request_type;
}
var http = createObject();
var usr;
var psw;
function send()
{
alert(document.getElementById('name').value);
alert(document.getElementById('email').value);
alert(document.getElementById('message').value);
contactName = encodeURI(document.getElementById('name').value);
contactEmail = encodeURI(document.getElementById('email').value);
contactMessage = encodeURI(document.getElementById('message').value);
http.open('get', 'send.php?name='+contactName+'&email='+contactEmail+'&message='+contactMessage);
http.onreadystatechange = loginReply;
http.send(null);
}
function loginReply()
{
if(http.readyState == 4)
{
var response = http.responseText;
alert(response);
if(response == 0)
//document.getElementById('submitForm').innerHTML = "<h6>Sending Failed</h6>";
alert('failed');
else
//document.getElementById('submitForm').innerHTML = "<h6>Message Sent</h6>";
alert('sent');
//setTimeout("restoreForm()",1000);
}
}
//JavaScript文档
函数createObject()
{
var请求类型;
var browser=navigator.appName;
如果(浏览器==“Microsoft Internet Explorer”)
{
请求类型=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
其他的
{
请求类型=新的XMLHttpRequest();
}
返回请求类型;
}
var http=createObject();
var-usr;
var-psw;
函数send()
{
警报(document.getElementById('name').value);
警报(document.getElementById('email').value);
警报(document.getElementById('message').value);
contactName=encodeURI(document.getElementById('name').value);
contactEmail=encodeURI(document.getElementById('email').value);
contactMessage=encodeURI(document.getElementById('message').value);
http.open('get','send.php?name='+contactName+'&email='+contactEmail+'&message='+contactMessage);
http.onreadystatechange=loginReply;
http.send(空);
}
函数loginReply()
{
如果(http.readyState==4)
{
var response=http.responseText;
警报(响应);
如果(响应==0)
//document.getElementById('submitForm').innerHTML=“发送失败”;
警报(“失败”);
其他的
//document.getElementById('submitForm').innerHTML=“消息已发送”;
警报(“已发送”);
//setTimeout(“restoreForm()”,1000);
}
}
需要帮助使脚本从文件访问表单字段
更新:
我设法解决了这个问题。问题在于这个函数
function submitForm()
{
if(check() == false)
return false;
else
{
form = document.getElementById('contactForm').innerHTML;
document.getElementById('contactForm').innerHTML = "<h3>Sending ...</h3>";
send();
setTimeout("restoreForm()",1000);
}
return false;
}
函数submitForm()
{
如果(检查()==false)
返回false;
其他的
{
form=document.getElementById('contactForm').innerHTML;
document.getElementById('contactForm').innerHTML=“发送…”;
send();
setTimeout(“restoreForm()”,1000);
}
返回false;
}
函数
send()
连接到另一个页面并通过它向电子邮件发送数据,当我在调用该函数之前更改了表单的innerHTML
时,当尝试访问一个不存在的字段时,该函数使该函数变为break
。为什么不使用JQuery?您从头开始编写的所有这些代码都打包到一个小型、紧凑、可重用的JavaScript库中,该库旨在让您专注于业务目标,而不是重新发明轮子
我的建议是查看并浏览一些示例。我相信这会在将来为你节省很多时间和头痛
记住,你的雇主付钱给你是为了进一步解决他们的业务目标,而不是解决其他开发人员已经为你解决的问题。替换提交表单
:
document.getElementById('submitForm').innerHTML = "<h6>Message Sent</h6>";
document.getElementById('submitForm').innerHTML=“消息已发送”;
及
document.getElementById('submitForm').innerHTML=“发送失败”;
使用contactForm
到底发生了什么?你有错误吗?你的脚本在运行吗?什么都没有!单独文件中的警报不会运行,但与表单位于同一文件中的脚本会运行。请检查其他文件是否作为脚本标记包含在HTML中。事实上,你应该为我们发布你的标题部分。我已经添加了该文件,但是文件中的js无法访问formI,我在另一个脚本中使用了相同的代码。但是在这个问题上它不起作用。我已经解决了这个问题,你可以查看帖子来看看答案。用一个较小的函数,下一个在你离开很久之后进来并接手的程序员不会犯你忽略id属性的错误。当然,这取决于你有多少时间进行重构,但我始终建议使用这样的代码:当你最终离开公司去做更大更好的事情时,你会让公司处于一种状态,其他人可以很容易地找到你离开的地方。他可能没有时间,他可能无法建议更改库或依赖项。他可能有很多遗留代码,需要时间进行重构和测试。我原则上同意使用jQuery或类似的工具来简化生活,但我不喜欢人们坚持认为它会解决别人的问题,因为引入它可能是不可能的
document.getElementById('submitForm').innerHTML = "<h6>Sending Failed</h6>";