5

テキストフィールドの長さが少なくとも特定の長さであるかどうかを確認しようとしています。これが私のコードです:

<form name="form2" id="form2" onsubmit="return validate()">
length 4: <input type="text" name = "t" id="t" />
<input type="button" name="submit" value="submit" />
</form>

<script>
function validate() {
    document.write("good");
    submitFlag = true;
    if(document.form2.t.value.length!=4){
        submitFlag=false;
        alert("ivalid length - 4 characters needed!");
    }
    return submitFlag;
}
</script>

[送信]をクリックしても何も起こりません。

4

7 に答える 7

5

送信ボタンを type="submit" に変更します。フォームが送信されないため、検証関数は呼び出されません。

于 2012-04-18T19:56:12.123 に答える
1

入力タイプは「送信」である必要があります

<form name="form2" id="form2" onsubmit="return validate()">
   length 4: <input type="text" name = "t" id="t" />
    <input type="submit" name="submit" value="submit" />  <!--INPUT TYPE MUST BE SUBMIT -->
    </form>

    <script>
    function validate() {
        document.write("good");
        submitFlag = true;
        if(document.form2.t.value.length!=4){
            submitFlag=false;
            alert("ivalid length - 4 characters needed!");
        }
        return submitFlag;
    }
</script>
于 2012-04-18T19:58:32.307 に答える
0

また、テキスト入力にmaxlength属性を追加する必要があります。これは、ユーザーに役立ちます。

<form name="form2" id="form2" onsubmit="return validate();">
    <input type="text" name="t" id="t" maxlength="4"/>
    <input type="submit" name="submit" value="submit"/>
</form>

<script type="text/javascript">
    function validate()
    {
        if ( document.getElementById("t").value.length != 4 )
        {
            alert( "Invalid length, must be 4 characters" );
            return false;
        }   
        return true;
    }
</script>
于 2012-04-18T20:01:34.607 に答える
0

いくつか問題があります。1) 入力を送信ボタンにする必要があり、2)document.write()ステートメントを削除する必要があります。コードを次のように変更します (または、この jsFiddle を参照してください)。

<form name="form2" id="form2" onsubmit="return validate()">
length 4: <input type="text" name = "t" id="t" />
<input type="submit" name="submit" value="submit" />
</form>

<script>
function validate() {
    submitFlag = true;
    if(document.form2.t.value.length!=4){
        submitFlag=false;
        alert("ivalid length - 4 characters needed!");
    }
    return submitFlag;
}
</script>​​​​

あなたはかなり近づいていましたが、そのコードでいくつかのクリーンアップを使用できました (注: 私は何も提供しませんでした)。

于 2012-04-18T19:58:20.550 に答える
0

「少なくとも一定の長さ」が必要な場合は、等しくない (!=) の代わりに、以上 (>=) が必要になる可能性があります。

于 2012-04-18T19:55:25.710 に答える
0

あなたのボタンは

<input type="submit" name="submit" value="submit" />

そうしないと、onsubmitイベントは発生しません。また、console.log()デバッグではなく、デバッグに使用しdocument.write()ます。

于 2012-04-18T19:56:31.670 に答える
0

さまざまなエラーを見つけました:

  • を使用しないでくださいdocument.write()。現在開いているドキュメントが上書きされます
  • form2は のプロパティではありませんdocument。を使用することもできますがdocument.forms.form2、こちらのdocument.getElementById("t")方が簡単です
  • あなたの式は「少なくとも4」をチェックせず、「正確に4」をチェックします。
  • あなたのボタンは何も送信しません。<button type="submit">またはに変更します。<input type="submit" />
  • 入力に​​を指定するか、属性pattern=".{4}"を与えることができますrequired
于 2012-04-18T19:56:45.023 に答える