【发布时间】:2014-02-04 20:32:23
【问题描述】:
这是我的第一篇文章,如果我有任何错误,请告诉我。
我正在尝试拥有一个具有可重用功能的外部 javascript 文件。例如,当我有一个文本字段并想要验证它时,我希望能够传递三个参数(要检查的值、字段描述和允许的最小长度)
在我的 HTML 顶部(顶部标签上方)我有我的脚本标签:
<script src="checkInputs.js"></script>
到目前为止,我有一个表格。表单有这两个字段(省略了一些代码):
<form name="join" action="createUser.php" onsubmit="return initDetails()" method="post">
<label> Choose a username: </label> <input type="text" name="username" maxlength=20><br>
<div id="uname" style="display: none; font-family:arial;color:red;font-size:12px;"></div>
表单的提交调用如下函数(我知道调用正确):
function initDetails() {
alert("inside initDetails");
var unamev=document.forms["join"]["username"].value;
var pass=true;
var usernameCheck = [];
usernameCheck.push(checkTextField(unamev, 5, "username"));
alert("check variables");
alert(usernameCheck['Pass']);
alert(usernameCheck['Error']);
alert("check variables finished");
if (usernameCheck['Pass']=="True"){
alert("We pass");
document.getElementById('uname').style.display = 'none';
}
else{
alert("We fail");
pass=false;
document.getElementById('uname').style.display = 'block';
document.getElementById("uname").innerHTML = usernameCheck['Error'];
}
return pass;
}
所以上面负责抓取用户名,用我的三个值调用checkTextField,并将返回的项目存储在一个数组中。这些用于查看测试是通过还是失败,并填充错误消息并显示带有该错误的隐藏块,最后返回 true 或 false 到提交。
所以现在对于外部 js 文件,我有以下内容:
function checkTextField(fieldInput, maxLength, fieldDescription) {
alert("Inside checkInputs.js ")
var errmsg = "";
if (fieldInput.length < maxLength ){
pass=false;
errmsg = "<li> The " + fieldDescription + " must be larger than 5 characters </li>";
if (fieldInput == null || fieldInput == ""){
pass=false;
errmsg = "<li> The " + fieldDescription + " cannot be empty </li>";
}
return {'Pass': "False", 'Error': errmsg};
}
else{
return {'Pass': "True", 'Error' : ""};
}
}
我曾经在 HTML 文件中有一些非常相似的东西,但为了避免重复代码,我希望有一个框架来处理这些。现在很可能是我犯了一个简单的语法小学生错误,但我正在尝试使用 Javascript 来学习,它不太好。
更新
我已根据此处发布的一些建议更新了代码。它现在调用外部文件和以下警报:
alert(usernameCheck['Pass']);
alert(usernameCheck['Error']);
两个警报都未定义....
【问题讨论】:
-
标题可能希望更具描述性。
-
真正的问题是:什么有效?什么没有? JS 控制台中有什么?等实际细节。
-
感谢您的快速回复,我在所有部分都有警报,但没有一个正在触发,表单只是提交,所以我认为它是某处的语法......
-
if usernameCheck[0] = "Pass" {是一个赋值,而不是一个布尔表达式,即== -
另外,if 语句的正确语法是
if (expression) { },你应该用括号括起来。
标签: javascript html