运行环境是:tomcat5.5.7+struts2.0.11+spring2.5+hibernate3.2,网页内容如下(为了找出问题结症,已经把实质性内容去掉):<%@ page contentType="text/html;charset=GBK" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>学生管理</title>
<!--<script type="text/javascript" src="/util.js"></script>-->
<script type="text/javascript">
function chkNameById(FldId) {
var Fld = document.getElementById(FldId);
Fld.value = trim(Fld.value);
if (Fld.value == "") {
alert("请填写名字!");
return false;
} else {
return true;
}
}
function trim(str) {
var newstr="";
var i=0;
while (i<str.length && str.charAt(i)==" ") {i++};
if (i<str.length) {
var j=str.length-1;
while (j>i && str.charAt(j)==" ") j--;
newstr=str.substring(i,j+1);
}
return newstr;
}
</script>
</head>
<body>
<div align="center">
班级:
<table>
<tr align="right">
<td>
<form action="addBatchStdts.action" method="post" enctype="multipart/form-data" onsubmit="return chkNameById('stdtsxls')">
<input type="file" id="stdtsxls" name="stdts_xls"/>
<input type="submit" name="Submit" value="上传学生名单"/>
</form>
</td>
</tr>
</table>
</div>
</body>
</html>该网页直接把javascript代码写在网页中,这个网页是能正常工作的。问题是当我把以上的代码写到一个独立的js文件时不能正常工作。也就是说,当我把<!--<script type="text/javascript" src="/util.js"></script>-->的注释标记去掉,把下面的javascript代码去掉后不能检测stdtsxls域是否填写了文件名,不管填没填文件名都是直接提交,没有任何提示。util.js文件如下:
function chkName(nameFld) {
nameFld.value=trim(nameFld.value);
if (nameFld.value=="") {
alert("请填写名字!");
return false;
} else {
return true;
}
}function chkNameById(FldId) {
var Fld=document.getElementById(FldId);
Fld.value=trim(Fld.value);
if (Fld.value=="") {
alert("请填写名字!");
return false;
} else {
return true;
}
}function trim(str) {
var newstr="";
var i=0;
while (i<str.length && str.charAt(i)==" ") {i++};
if (i<str.length) {
var j=str.length-1;
while (j>i && str.charAt(j)==" ") j--;
newstr=str.substring(i,j+1);
}
return newstr;
}我改成直接使用名字引用不是同样的现象。奇怪的是,这个文件在其它有些地方引用是能正常工作的。望哪位高手解释下。谢谢。
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>学生管理</title>
<!--<script type="text/javascript" src="/util.js"></script>-->
<script type="text/javascript">
function chkNameById(FldId) {
var Fld = document.getElementById(FldId);
Fld.value = trim(Fld.value);
if (Fld.value == "") {
alert("请填写名字!");
return false;
} else {
return true;
}
}
function trim(str) {
var newstr="";
var i=0;
while (i<str.length && str.charAt(i)==" ") {i++};
if (i<str.length) {
var j=str.length-1;
while (j>i && str.charAt(j)==" ") j--;
newstr=str.substring(i,j+1);
}
return newstr;
}
</script>
</head>
<body>
<div align="center">
班级:
<table>
<tr align="right">
<td>
<form action="addBatchStdts.action" method="post" enctype="multipart/form-data" onsubmit="return chkNameById('stdtsxls')">
<input type="file" id="stdtsxls" name="stdts_xls"/>
<input type="submit" name="Submit" value="上传学生名单"/>
</form>
</td>
</tr>
</table>
</div>
</body>
</html>该网页直接把javascript代码写在网页中,这个网页是能正常工作的。问题是当我把以上的代码写到一个独立的js文件时不能正常工作。也就是说,当我把<!--<script type="text/javascript" src="/util.js"></script>-->的注释标记去掉,把下面的javascript代码去掉后不能检测stdtsxls域是否填写了文件名,不管填没填文件名都是直接提交,没有任何提示。util.js文件如下:
function chkName(nameFld) {
nameFld.value=trim(nameFld.value);
if (nameFld.value=="") {
alert("请填写名字!");
return false;
} else {
return true;
}
}function chkNameById(FldId) {
var Fld=document.getElementById(FldId);
Fld.value=trim(Fld.value);
if (Fld.value=="") {
alert("请填写名字!");
return false;
} else {
return true;
}
}function trim(str) {
var newstr="";
var i=0;
while (i<str.length && str.charAt(i)==" ") {i++};
if (i<str.length) {
var j=str.length-1;
while (j>i && str.charAt(j)==" ") j--;
newstr=str.substring(i,j+1);
}
return newstr;
}我改成直接使用名字引用不是同样的现象。奇怪的是,这个文件在其它有些地方引用是能正常工作的。望哪位高手解释下。谢谢。
解决方案 »
- 怎样读取Cookie?
- JS中字符串的问题
- 高手帮忙!我写的这个ajax表单提交模块是否存在内存泄漏问题?如能找到此bug百分相赠!
- 如何在javascript内测试window.opener?
- 日期比较,怎么取出的当前是2003-07-01?
- 用javascript怎样使跳到另外一个页面?
- ————————————初学小菜:关于POST和GET的区别!——————————
- 请问当ie最小化时会触发什么事件,如何用javascript或vbscrip获得?
- 请问,如何能够在点击一个链接之后完成form的submit呢?
- ueditor jsp版本上传图片问题
- DIV嵌套会出现内存错误,但是想要显示有滚动条,请大家帮忙~~
- 菜鸟的问题```
楼主【wudeyan】截止到2008-06-28 21:11:21的历史汇总数据(不包括此帖):
发帖数:5 发帖分:130
结贴数:5 结贴分:130
未结数:0 未结分:0
结贴率:100.00% 结分率:100.00%
敬礼!
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
理论上来说,这行应该对util.js不产生影响。权当死马当活马医吧,我把这一行粘贴上去,网页变成这样:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
<title>......</title>
发现util.js竟然能正常工作了,神奇啊。然后我把meta行去掉,发现util.js还是能够正常工作(我对上天保证,我没改其它地方)。这时的网页与util.js不能正常工作时的网页相比,唯一区别就是原来的<head>和<title>写在同一行,现在的写成两行。BTW:今天写代码时又被类似问题折腾。我真是怕了javascript了。javascript的弱数据类型设计虽然带来了灵活的好处,但为之付出的代价是理解起来比较混乱,而且容易出错。
出现问题的页面一般可以在firefox下正常运行
后来实在不行了就吧js文件include进来,太烦人了