无法使用javascript访问第二个表单元素
问题是,userid被抓取得很好,但是第二个元素“passwordfield”和所有剩余元素总是返回null。我尝试了所有获取该元素值的方法,但它们总是返回null对象,然后我的代码在尝试访问null值时抛出并出错 这是我的剧本无法使用javascript访问第二个表单元素,javascript,forms,Javascript,Forms,问题是,userid被抓取得很好,但是第二个元素“passwordfield”和所有剩余元素总是返回null。我尝试了所有获取该元素值的方法,但它们总是返回null对象,然后我的代码在尝试访问null值时抛出并出错 这是我的剧本 function formValidation() { var uid = document.registration.userid.value; document.write("<h1>" + uid + "</h1>");
function formValidation() {
var uid = document.registration.userid.value;
document.write("<h1>" + uid + "</h1>");
try {
var passid = document.registration.passwordfield.value;
document.write("<h1>" + passid.value + "</h1>");
} catch (error) {
alert(error);
}
var uname = document.getElementById("username");
document.write("<h1>" + uname + "</h1>");
var uadd = document.getElementById("address");
document.write("<h1>" + uadd + "</h1>");
var ucountry = document.getElementById("country");
document.write("<h1>" + uncountry + "</h1>");
var uzip = document.getElementById("zip");
document.write("<h1>" + uzip + "</h1>");
var uemail = document.getElementById("email");
document.write("<h1>" + uemail + "</h1>");
{
if (passid_validation(passid, 7, 12)) {
if (allLetter(uname)) {
if (alphanumeric(uadd)) {
if (countryselect(ucountry)) {
if (allnumeric(uzip)) {
if (ValidateEmail(uemail)) {
if (validsex(umsex, ufsex)) {}
}
}
}
}
}
}
}
return false;
}
function userid_validation(uid, mx, my) {
var uid_len = uid.value.length;
if (uid_len == 0 || uid_len >= my || uid_len < mx) {
alert("User Id should not be empty / length be between " + mx + " to " + my);
uid.focus();
return false;
}
return true;
}
function passid_validation(passid, mx, my) {
var passid_len = passid.value.length;
if (passid_len == 0 || passid_len >= my || passid_len < mx) {
alert("Password should not be empty / length be between " + mx + " to " + my);
passid.focus();
return false;
}
return true;
}
function allLetter(uname) {
var letters = /^[A-Za-z]+$/;
if (uname.value.match(letters)) {
return true;
} else {
alert('Username must have alphabet characters only');
uname.focus();
return false;
}
}
function alphanumeric(uadd) {
var letters = /^[0-9a-zA-Z]+$/;
if (uadd.value.match(letters)) {
return true;
} else {
alert('User address must have alphanumeric characters only');
uadd.focus();
return false;
}
}
function countryselect(ucountry) {
if (ucountry.value == "Default") {
alert('Select your country from the list');
ucountry.focus();
return false;
} else {
return true;
}
}
function allnumeric(uzip) {
var numbers = /^[0-9]+$/;
if (uzip.value.match(numbers)) {
return true;
} else {
alert('ZIP code must have numeric characters only');
uzip.focus();
return false;
}
}
function ValidateEmail(uemail) {
var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if (uemail.value.match(mailformat)) {
return true;
} else {
alert("You have entered an invalid email address!");
uemail.focus();
return false;
}
}
function validsex(umsex, ufsex) {
x = 0;
if (umsex.checked) {
x++;
}
if (ufsex.checked) {
x++;
}
if (x == 0) {
alert('Select Male/Female');
umsex.focus();
return false;
} else {
alert('Form Successfully Submitted');
window.location.reload()
return true;
}
}
函数formValidation(){
var uid=document.registration.userid.value;
文档。写入(“+uid+”);
试一试{
var passid=document.registration.passwordfield.value;
document.write(“+passid.value+”);
}捕获(错误){
警报(错误);
}
var uname=document.getElementById(“用户名”);
文件。写(“+uname+”);
var uadd=document.getElementById(“地址”);
文件。写(“+uadd+”);
var ucontry=document.getElementById(“国家”);
文件。写(“+uncountry+”);
var uzip=document.getElementById(“zip”);
文件。写(“+uzip+”);
var uemail=document.getElementById(“电子邮件”);
文件。写(“+uemail+”);
{
if(passid_验证(passid,7,12)){
如果(所有信件(联塞特派团)){
if(字母数字(uadd)){
如果(国家选择(UCONTRY)){
if(全数字(uzip)){
if(ValidateEmail(uemail)){
if(validsex(umsex,ufsex)){}
}
}
}
}
}
}
}
返回false;
}
函数userid_验证(uid、mx、my){
变量uid\u len=uid.value.length;
如果(uid|len==0 | uid|len>=my | uid|len=my | | passid|len
这是我的html
<!DOCTYPE html>
<html>
<head>
<title>form</title>
<script src="hai.js" type="text/javascript" ></script>
</head>
<body>
<h1>Registration Form</h1>
<p>Use tab keys to move from one input field to the next.</p>
<form name="registration" onSubmit="return formValidation();" action="hai.js" METHOD="POST">
User id:
<input type="text" name="userid" size="12" /><br>
Password:
<input type="password" name="passwordfield" size="12" /><br>
Name:
<input type="text" name="username" size="50" /><br>
Address:
<input type="text" name="address" size="50" /><br>
Country:
<select name="country">
<option selected="" value="Default">(Please select a country)</option>
<option value="AF">Australia</option>
<option value="AL">Canada</option>
<option value="DZ">India</option>
<option value="AS">Russia</option>
<option value="AD">USA</option>
</select><br>
ZIP
<input type="text" name="zip" /><br>
Email:
<input type="text" name="email" size="50" /><br>
Sex:
<input type="radio" name="sex" value="Male" /><span>Male</span><br>
<input type="radio" name="sex" value="Female" /><span>Female</span><br>
Language
<input type="checkbox" name="en" value="en" checked /><span>English</span><br>
<input type="checkbox" name="nonen" value="noen" /><span>Non English</span><br>
About:<br>
<textarea name="desc" id="desc"></textarea><br>
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
形式
登记表
使用tab键从一个输入字段移动到下一个输入字段
用户id:
密码:
姓名:
地址:
国家:
(请选择一个国家/地区)
澳大利亚
加拿大
印度
俄罗斯
美国
拉链
电邮:
性别:
男性
女性
语言
英语
非英语
关于:
问题可能出在document.write上,就好像它在页面加载后运行一样,它会覆盖您的页面,然后您当然不能再访问这些元素了
另外,为什么使用document.registration.userid而不是document.registration.username?根据浏览器的不同,getElementById可能无法处理名称属性。问题在于密码字段前的document.write()。。出于某种原因,调用它会从文档中删除注册变量。。。 我不太清楚为什么 但我尝试将其删除为“document.write”,并以推荐的方式添加节点:
var myElement = document.createElement("h1");
myElement.appendChild(document.createTextNode("My Text here"));
document.appendChild(myElement);
它工作得很好。。。
您应该阅读以下内容:
我认为它可能会对您有所帮助:)您不应该使用
文档。请在加载页面后编写。它会破坏现有的内容…并认真考虑整齐地缩进代码。当您想使用getElementById
时,您可能还应该为元素提供id
s。