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未定义。

未捕获的 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 回答