注册 登录
编程论坛 J2EE论坛

表单与javascript菜鸟问题

ming528 发布于 2008-11-03 16:57, 2019 次点击
请高手帮忙,在使用<html:from  标签的时候,里面不能定义:name 这个属性,但是我在用javascript验证表单的时候要用到表单的名字,不知道这个问题怎么解决? 先谢了!下面是的我原代码:
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://jakarta.
    prefix="bean"%>
<%@ taglib uri="http://jakarta.
    prefix="html"%>
<html>
<script type="text/javascript">
function on_submit(){
    if(form1.username.value==""){
        alert("用户名不能为空,请输入用户名!");
        form1.username.focus();
        return false;
    }
    if(form1.password.value==""){
        alert("密码不能为空,请输入用户名!");
        form1.password.focus();
        return false;
    }
    if(form1.repassword.value==""){
        alert("确认密码不能为空,请输入用户名!");
        form1.repassword.focus();
        return false;
    }
    if(form1.password.value!=form1.repassword.value){
        alert ("两次密码输入不一样,请重新输入!");
        form1.username.focus();
        return false;
    }
    if(form1.username.value==""){
        alert("用户名不能为空,请输入用户名!");
        form1.password.focus();
        return false;
    }
}
</script>
<head>
<title>注册页面</title>
<style type="text/css">
<!--
.STYLE1 {color: #FF0000}
.STYLE5 {
    font-size: xx-large;
    font-family: "新宋体";
    color: #00CC66;
}
-->
</style>
</head>
<body>
 <center><h2 class="STYLE5">新用户注册</h2></center>
<html:form name="form1" action="/regist" onsubmit="return on_submit()">
  <table width="520" height="372" border="0" align="center">
    <tr>
      <td width="131">用户名:</td>
      <td width="373"><label>
        <html:text property="username" />
        <span class="STYLE1">*</span></label></td>
    </tr>
    <tr>
      <td><p>真实姓名:</p>      </td>
      <td><label>
        <html:text property="truename" />
      </label></td>
    </tr>
    <tr>
      <td>密码:</td>
      <td><label>
        <html:password property="password" />
        <span class="STYLE1">*</span></label></td>
    </tr>
    <tr>
      <td>确认密码:</td>
      <td><label>
        <html:password property="repassword" />
        <span class="STYLE1">*</span></label></td>
    </tr>
    <tr>
      <td>性别:</td>
      <td><label>
        <html:text property="sex" />
      </label></td>
    </tr>
    <tr>
      <td>e-mail:</td>
      <td><label>
       <html:text property="email" />
      </label></td>
    </tr>
    <tr>
      <td>电话:</td>
      <td><label>
       <html:text property="phone" />
      </label></td>
    </tr>
    <tr>
      <td>教育程度:</td>
      <td><label>
      <html:text property="education" />
      </label></td>
    </tr>
    <tr>
      <td>爱好:</td>
      <td><label>
        <input name="favorite" type="text" id="favorite" />
      </label></td>
    </tr>
    <tr>
      <td valign="top">个性签名:</td>
      <td><label>
       <html:textarea property="characters" cols="50" rows="8" />
      </label></td>
    </tr>
    <tr>
      <td align="right"><label>
        <input type="submit" name="Submit" value="提交"/>
      </label></td>
      <td align="center"><label>
        <input type="reset" name="Submit2" value="重置"/>
      </label></td>
    </tr>
  </table>
  </html:form>
</body>
</html>
15 回复
#2
elan19862008-11-03 19:22
用户名 .....没有输入的地方
#3
ming5282008-11-03 21:46
<html:text property="username" />
这里就是用户名输入的地方啊!
应该不是这个问题,我想知道的是<html:form name="form1" ...与 <form name="form" ...  这两种方式有什么不一样,我现在感觉在<html:form name="form" 这种方式中好象不行,好象 这里不能定义:name 这个属性,请问是不是这样?
#4
elan19862008-11-03 22:28
我现在写html代码的时候在处理js时一般直接在dreamweaver里有个处理表单
可以直接用这个来设置它
很简单
#5
huwangvs2008-11-04 11:14
<html:form>不能有name属性?
这个没有试过,如果不行的话,你可以给form里的每个字段加个id ,然后用getElementsById来取值即可,不需要from1.888.value来取值。
#6
ming5282008-11-04 12:16
感谢前面朋友的回答,也许有朋友把我的代码放入以扩展名为‘html’的文件进行调试,看不到文本输入框那是自然的,因为我写的是jsp页面,要放入web服务器后通过浏览器才能看到,如果是写的html 文件的话,我把相应的标记库代码换成标准的html语言就行了,就象我的前面说的一样,在html语言中form 表单里是可以定义name 这个属性,而现在我想用新学的<html: 这个标记库,而问题就出来了,望高手解答!
#7
huwangvs2008-11-04 13:36
是struts吧?你查查它的api看看就知道了嘛。
#8
ming5282008-11-04 15:28
恩,是struts ,谢了!
#9
guoxhvip2008-11-04 21:34
struts1.x
html:form好象确实没有id和name属性
不过html:text有name和id属性,最好每一个给个id(因为这样不会出现重复)
在javascript里使用document.all.name.value来提取 name为元素的id或者name属性
#10
ming5282008-11-04 22:34
看来是个难题了,上楼版主说得对,不过我又试了下用<html: 这个形式,但是又不是struts了,不能通过自动生成的javaBean和action来验证,看来既想用struts又用js 只能想想其它的办法了!
#11
huwangvs2008-11-05 09:21
text有id就直接取text的id就是了。
何必从form开始找text呢???
#12
shan_08232008-11-05 10:39
那就用struts 自带的验证吧,很方便,并且灵活性很好 写自己的validation.xml, 资源文件 xx_zh_CN.properties 在jsp 页面只要写 相关的 标签  error message 标签,然后在 strust-config.xml 添加 org.apache.struts.validator.ValidatorPlugIn 插件 并设置好 配置文件 validator-rules.xml,validation.xml文件的 属性.. 就OK 了,详细就自己查看相关的strust 验证框架的资料吧..
#13
ming5282008-11-05 13:24
我要的就是楼上的答案,谢了!
#14
guoxhvip2008-11-05 13:39
[bo][un]shan_0823[/un] 在 2008-11-5 10:39 的发言:[/bo]

那就用struts 自带的验证吧,很方便,并且灵活性很好 写自己的validation.xml, 资源文件 xx_zh_CN.properties 在jsp 页面只要写 相关的 标签  error message 标签,然后在 strust-config.xml 添加 org.apache.struts.va ...

这样虽然可以 不过是到服务器验证
最好是在客户端验证
#15
wyq032008-11-05 13:50
什么叫struts不能与js一起用..

你所谓的使用javaBean和action来验证.
我猜的没错的话,应该是actionform 和action .

其实你没有完全弄动struts吧.
你可以这么写,前台(jsp)使用标准的html语言.

后台使用struts,一样用吗.(可能会出现actionfrom 影射不到的问题,因为没有使用到struts的标签库).
不过你可以自己写个javaBean(这才是真正的javaBean,非自动生成的actionfrom),然后进行影射.

其实现在的验证没必要非得放到actionfrom 中去验证.你可以前台使用js验证,后台在action(aciton 也太麻烦,干脆直接在Filter中对特殊字符进行验证.) 进行验证.

当然在struts2.0上,就更方便了,直接在(jsp)表头加上struts2.0的标签,就可以用了.
#16
wyq032008-11-05 14:09
使用框架的目的,是为了,让我们的开发更加方便,更加灵活,代码更加易读.
没必要为了使用框架而使用.
有很多东西是可以互相结合的,取其精华去其糟粕,验证来说,完全可以使用js
或dwr来,就没必要再使用(actionform)。
我在以前的项目中,也是使用全套的struts1.x (大约3年前),
包括 actionform ,action等。
不过现在随着开发技术的不断更新,struts1.X的
actionform验证已经逐渐被淘汰,通过struts2.0的推出就已经证实了这一点。
上面是我的个人看法,请不要人身攻击哦....
1