0

我正在尝试从我的 JavaScript 表单中检索一个变量,以确定该表单之前是否已经过验证。

因此,当用户单击“提交”按钮时,将对其进行检查。我已经设置好了,所以当点击这个按钮时它可以运行一个函数。

验证码:

$(document).ready(function(){
    $('#email').keyup(function() {
        var email = $('#email').val();
        var minChars = 5;
        var characters_error = 'Not enough characters';
        $('#email_status').text("Checking..");  
        if (email != '') {
            if($('#email').val().length <= minChars)
            {
                //if it's bellow the minimum show characters_error text
                $('#email_status').text(characters_error);
            }
            else if ($('#email').val().length > minChars)
            {
                $.post('validation/refer_validation.php', {email: email}, function(data){
                    $('#email_status').text(data);
                }); 
            } else
            {
                $('#email_status').text('');
            }
         }
    });
});

按钮代码:

$(document).ready(function(){
    $("#submit").click(function () {
        if (validated != true)
        {
            // Tell the user that there is an error in the form.
        }
    });
});

请注意我是如何添加名为“已验证”的变量的,它应该设置在某个地方,但这是我感到困惑的地方。我将如何更新变量并将其返回给按钮?因为验证代码包含在 HTML 表单中,但如果我创建了一个变量,它可能总是将自身更新为默认值,因为该函数是在按键时调用的。

希望这一切都有意义。

4

4 回答 4

1

与其使用提交按钮调用验证函数,不如在表单的 onsubmit 中调用它。如果您返回 true,它将继续并提交表单,如果您返回 false,它将取消表单提交。

<form  onsubmit="return validate();">

Onsubmit 在提交实际发生之前被调用。

于 2012-07-04T11:02:10.007 回答
0

设置一个全局变量,即在所有函数之外,设置

var validated = false;

然后相应地设置验证,并且应该在提交中阅读。

于 2012-07-04T11:03:41.800 回答
0

使用变量验证作为全局变量,对于每个成功的验证使验证为真

然后当您单击提交按钮时它工作正常

于 2012-07-04T11:07:04.467 回答
0

与其抛出外部变量,不如记录表单已被验证为表单本身的数据属性这一事实。

此外,在单击按钮时进行验证会忽略表单可以通过 enter 键提交的事实,因此请在表单的提交事件上进行验证。

$(function() {
    $('#some_form').on('submit', function() {

        //validated before? forget it
        if ($(this).data('validated')) { alert('already validated'); return false; }

        //else, if first time, log that we're doing it
        $(this).data('validated', 'true');

        //do validation...
   });
});
于 2012-07-04T11:08:40.570 回答