Jquery表格|在上载栏可见之前验证表单

时间:2014-05-12 11:12:02

标签: php jquery forms

插件:Jquery.form.js |的jquery.js

解释 我想在显示加载栏之前验证标题说明。在Jquery提交的php中,我检查标题是否超过3个字符且小于80,等等。如果所有这些信息都是正确的,则上传脚本将运行,但如果不是,那么php将会死亡并显示相应的错误响应。

问题是加载栏显示整个请求的加载进度而不仅仅是上传过程,这很好但是在我想要显示加载栏之前我希望能够验证文本字段PHP。

如果您认为可以以更好的方式完成,请详细说明。

JS

function noteUpload() {
    var options = {
        beforeSend: function() {
            // set everything to 0
        },
        data: 
        {
            title: $('#uploadNoteTitle').val(),
            description: $('#uploadNoteDescription').val()
        },
        uploadProgress: function(event, position, total, percentComplete) {
            //Over here I show the loading bar and let it update with "percentComplete"
        },
        success: function() {

        },
        complete: function(response) {
            //Over here i receive the response and show the error messages if there are any.
        },
        error: function() {
            console.log("error");
        }
    }
};

非常感谢!

罗布

2 个答案:

答案 0 :(得分:0)

如果验证为真,则创建一个函数来验证标题和描述以及函数结束调用noteUpload函数:

function validateForm(){
    // validate script
    if(true == validation){
          noteUpload()
    }
}

答案 1 :(得分:0)

您需要在

中添加某种形式的验证
beforeSubmit

回调。如果失败,只需返回false并且不会发布表单。举个例子,假设你使用的是jquery.validate(http://bassistance.de/jquery-plugins/jquery-plugin-validation/

var options = {    
    beforeSubmit: function(arr, $form, options) {              
        if ( !$form.valid() ) {
            return false;
        }
    },
    ...
}

如果您坚持进行服务器端验证,请在回调中添加AJAX方法。

var options = {    
    beforeSubmit: function(arr, $form, options) {    
        var valid = false;  

        $.ajax({
            type : 'POST',
            url : 'validation.php',
            async: false,
            data : $form.serialize(),
            success : function(isValid) {
                if ( isValid) {
                    valid = true
                }
            }
        }).then(function(){
            if ( !valid ) {
                return false;
            }           
        });
    },
    ...
}