<html:form action="/UserLoginAction" onsubmit="return checkMail(document.form[0].mail.value)">这样写能通过吗?html:form 没有onsubmit属性吧?
给你的form命个名然后写方法在mail.js中function formName.onsubmit(){
       ..............
}

解决方案 »

  1.   

    要是用struts的validate你就不用写什么表达式了。你可以试试看。
      

  2.   

    在struts中,js验证采用如下格式:
    <html:form  action="/UserLoginAction" focus="username" onsubmit="return validateLogonForm(this);">
    ...................
    <html:javascript formName="logonForm" dynamicJavascript="true" staticJavascript="false"  />
    <script language=Javascript1.1 src="staticJavascript.jsp"></script>
    .............
    其中logonForm在validation.xml中定义:
     <form name="logonForm">            <field property="username"
                        depends="required, minlength,maxlength">
                    <arg0   key="prompt.username"/>
                    <arg1   key="${var:minlength}" name="minlength"
                       resource="false"/>
                    <arg2   key="${var:maxlength}" name="maxlength"
                       resource="false"/>
                    <var>
                        <var-name>maxlength</var-name>
                        <var-value>16</var-value>
                    </var>
                    <var>
                        <var-name>minlength</var-name>
                        <var-value>3</var-value>
                    </var>
                </field>            <field property="password"
                        depends="required, minlength,maxlength"
                        bundle="alternate">
                    <arg0   key="prompt.password"/>
                    <arg1   key="${var:minlength}" name="minlength"
                       resource="false"/>
                    <arg2   key="${var:maxlength}" name="maxlength"
                       resource="false"/>
                    <var>
                        <var-name>maxlength</var-name>
                        <var-value>16</var-value>
                    </var>
                    <var>
                        <var-name>minlength</var-name>
                        <var-value>3</var-value>
                    </var>
                </field>        </form>
    对应的js代码在validator-rules.xml中定义:
    <validator name="required"
                classname="org.apache.struts.validator.FieldChecks"
                   method="validateRequired"
             methodParams="java.lang.Object,
                           org.apache.commons.validator.ValidatorAction,
                           org.apache.commons.validator.Field,
                           org.apache.struts.action.ActionErrors,
                           javax.servlet.http.HttpServletRequest"
                      msg="errors.required">         <javascript><![CDATA[
                function validateRequired(form) {
                    var isValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oRequired = new required();
                    for (x in oRequired) {
                     var field = form[oRequired[x][0]];
                    
                        if (field.type == 'text' ||
                            field.type == 'textarea' ||
                            field.type == 'file' ||
                            field.type == 'select-one' ||
                            field.type == 'radio' ||
                            field.type == 'password') {
                            
                            var value = '';
    // get field's value
    if (field.type == "select-one") {
    var si = field.selectedIndex;
    if (si >= 0) {
    value = field.options[si].value;
    }
    } else {
    value = field.value;
    }
                            
                            if (value == '') {
                            
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oRequired[x][1];
                            isValid = false;
                            }
                        }
                    }
                    if (fields.length > 0) {
                       focusField.focus();
                       alert(fields.join('\n'));
                    }
                    return isValid;
                }]]>
             </javascript>      </validator>
      

  3.   

    <validator name="requiredif"
                     classname="org.apache.struts.validator.FieldChecks"
                     method="validateRequiredIf"
                     methodParams="java.lang.Object,
                                   org.apache.commons.validator.ValidatorAction,
                                   org.apache.commons.validator.Field,
                                   org.apache.struts.action.ActionErrors,
                                   org.apache.commons.validator.Validator,
                                   javax.servlet.http.HttpServletRequest"
                     msg="errors.required">
          </validator>      <validator name="minlength"
                classname="org.apache.struts.validator.FieldChecks"
                   method="validateMinLength"
             methodParams="java.lang.Object,
                           org.apache.commons.validator.ValidatorAction,
                           org.apache.commons.validator.Field,
                           org.apache.struts.action.ActionErrors,
                           javax.servlet.http.HttpServletRequest"
                  depends=""
                      msg="errors.minlength">         <javascript><![CDATA[
                function validateMinLength(form) {
                    var isValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oMinLength = new minlength();
                    for (x in oMinLength) {
                        var field = form[oMinLength[x][0]];
                        
                        if (field.type == 'text' ||
                            field.type == 'textarea') {
                            
                            var iMin = parseInt(oMinLength[x][2]("minlength"));
                            if ((field.value.length > 0) && (field.value.length < iMin)) {
                                if (i == 0) {
                                    focusField = field;
                                }
                                fields[i++] = oMinLength[x][1];
                                isValid = false;
                            }
                        }
                    }
                    if (fields.length > 0) {
                       focusField.focus();
                       alert(fields.join('\n'));
                    }
                    return isValid;
                }]]>
             </javascript>      </validator>
          <validator name="maxlength"
                classname="org.apache.struts.validator.FieldChecks"
                   method="validateMaxLength"
             methodParams="java.lang.Object,
                           org.apache.commons.validator.ValidatorAction,
                           org.apache.commons.validator.Field,
                           org.apache.struts.action.ActionErrors,
                           javax.servlet.http.HttpServletRequest"
                  depends=""
                      msg="errors.maxlength">         <javascript><![CDATA[
                function validateMaxLength(form) {
                    var isValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oMaxLength = new maxlength();
                    for (x in oMaxLength) {
                        var field = form[oMaxLength[x][0]];
                        
                        if (field.type == 'text' ||
                            field.type == 'textarea') {
                            
                            var iMax = parseInt(oMaxLength[x][2]("maxlength"));
                            if (field.value.length > iMax) {
                                if (i == 0) {
                                    focusField = field;
                                }
                                fields[i++] = oMaxLength[x][1];
                                isValid = false;
                            }
                        }
                    }
                    if (fields.length > 0) {
                       focusField.focus();
                       alert(fields.join('\n'));
                    }
                    return isValid;
                }]]>
             </javascript>      </validator>
      

  4.   

    也许是你的这句onsubmit="return checkMail(document.form[0].mail.value)"有问题,js是个弱类型语言,
    给document.form[0].mail.value加上''或"",即('document.form[0].mail.value')或("document.form[0].mail.value"),或者
    最好将document.form[0].mail.value赋给一个变量,在通过js传递给你的函数,试试。