0

フォームがあり、送信時にjavascript検証関数を実行します。

       <form method="post" onsubmit="return validateForm(this.id)" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data" id='addjournalinfoform' style='border:0px;width:90%' class="formular" >

            <fieldset>
                <legend>
                Journal
                </legend>
                <label>
                    <span>* ISSN:</span><br />
                    <input type='text' onfocusout="validateField('issn')" class='text-input' value="" name="issn" id="issn" style='width:30%'>
                </label>
           </fieldset>

       </form>

これは関数です:

function validateForm(form)
{
    if(form=="addjournalinfoform")
    {
        alert('onSubmit');
        if($('#issn').val()=="")
        {
            $('#issnMsg').hide(500);
            $('#issnMsg .formErrorContent').html("* This field is required!<br />");
            $('#issnMsg').css('margin-left', $('#'+field).width()-20);
            $('#issnMsg').show(500);
            $('#issn').focus();
            $('html:not(:animated),body:not(:animated)').animate({scrollTop: $('#issn').offset().top-50}, 0);
            return false;
        }
        else
        {
            return true;
        }

    }
    return false;
}

問題は、関数がfalseを返した場合でも、フォームが送信されたままになることです。何が悪いのですか?送信を防ぐ方法は?

4

2 に答える 2

4

この行で:

$('#issnMsg').css('margin-left', $('#'+field).width()-20);

変数fieldが定義されていません。

Uncaught ReferenceError: フィールドが定義されていません

自分のアプリケーションをデバッグする方法を学ばなければなりません。使用しているブラウザーでコンソールを使用する方法についてお読みください。

ブラウザーでコンソールを開く方法については、この Webmasters.SE の質問を参照してください。

于 2012-07-11T07:41:09.880 に答える
3

コンソールを開きます (firebug、chrome、opera、ie9 にはそれがあります)。validateForm() の実行中にエラーがないかどうかを確認します。

行にエラーがあると思います:

 $('#issnMsg').css('margin-left', $('#'+field).width()-20);

エラーがあります:

 Uncaught ReferenceError: field is not defined

field変数を宣言していますか?

于 2012-07-11T07:45:16.777 に答える