0

を検証していtextareaます。正常に機能していますが、フォームを送信すると機能しなくなります。

私のコードは次のとおりです。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
         <link rel="stylesheet" href="dojo/dojoroot/dijit/themes/claro/document.css">
        <link rel="stylesheet" href="dojo/dojoroot/dijit/themes/claro/claro.css" />
        <script src='dojo/dojoroot/dojo/dojo.js' data-dojo-config=' parseOnLoad: true'></script>
        <title>JSP Page</title>
        <script>
            dojo.provide("ValidationTextarea");
             dojo.require("dijit.form.SimpleTextarea");
            dojo.require("dijit.form.ValidationTextBox");  
             dojo.require("dijit.form.Form");
            dojo.require("dijit.form.Button");
            dojo.declare("ValidationTextarea",
            [dijit.form.ValidationTextBox,dijit.form.SimpleTextarea],
            {
                invalidMessage: "Invalid Input",

                postCreate: function() {
                    this.inherited(arguments);
                },

                validate: function() {
                    this.inherited(arguments);
                    if (arguments.length==0) this.validate(true);
                },

                onFocus: function() {
                    if (!this.isValid()) {
                        this.displayMessage(this.getErrorMessage());
                    }
                },

             onBlur: function() {
                    this.validate(false);
                }
            }
        );
        </script>
    </head>
    <body class="claro">
        <div data-dojo-type="dijit.form.Form" id="myForm" data-dojo-id="myForm"
             action="" method="post">
         <script type="dojo/method" data-dojo-event="onReset">
                return confirm('Press OK to reset Form values');
            </script>
            <script type="dojo/method" data-dojo-event="onSubmit">
                if(this.validate()){
                return confirm('Form is valid, press OK to submit');
                }
                else{
                alert('Form contains invalid data.  Please correct first');
                    return false;
                }
                return true;
            </script>
        <textarea id="address" name="address"  rows="4" cols="25" promptMessage="Allowed , Alphanumeric # , . - _ blank space " regExp="^[a-z0-9 #,_. -]{3,300}" dojoType="ValidationTextarea"  required="true"></textarea>

         <button data-dojo-type="dijit.form.Button" type="reset">Reset</button> 
         <button data-dojo-type="dijit.form.Button" type="submit" name="submitButton" value="Submit">Submit</button>
        </div>
    </body>
</html>

上記のコードは問題なく動作onBlurしますが、送信ボタンを使用するとスローされます

フォームに無効なデータが含まれています。最初に修正してください

4

1 に答える 1

2

検証関数で使用する必要がありreturnます。そうしないと、その関数を呼び出すと次のように返されます。undefinedこれはブール値のfalseと「同じ」です。例:

間違った使用法:

function isThisCorrect() {
    if(gCorrect) {
       rogerthat();
    } else {
       nope();
    }
}
var boolReturn = isThisCorrect();

注意、何も返されません

正しい使い方

function isThisCorrect() {
    if(gCorrect) {
       return true;
    }
    return false;
}
var boolReturn = isThisCorrect();
于 2012-08-12T07:14:55.187 に答える