Php Jquery表单|在上传栏可见之前验证表单

Php Jquery表单|在上传栏可见之前验证表单,php,jquery,forms,Php,Jquery,Forms,插件:Jquery.form.js | Jquery.js 解释 我想在显示加载栏之前验证标题和说明。在Jquery提交给的php中,我检查标题是否超过3个字符,小于80个字符,等等。如果所有这些信息都正确,上传脚本将运行,但如果不正确,php将停止运行,并显示相应的错误响应 问题是加载栏显示整个请求的加载进度,而不仅仅是上载过程,这很好,但在我希望显示加载栏之前,我希望能够验证php中的文本字段 如果你认为这可以做得更好,请详细说明 JS 多谢各位 Rob创建一个函数来验证函数的标题和描述,如

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

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

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

如果你认为这可以做得更好,请详细说明

JS

多谢各位


Rob

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

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

您需要在

beforeSubmit
回拨。如果失败,只需返回false,表单将不会被发布。例如,假设您正在使用jquery.validate

如果坚持执行服务器端验证,请向回调中添加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;
            }           
        });
    },
    ...
}   

用户是否能够编辑javascript,这样就不需要进行验证?是的,因此可能有一种替代方法是更新有效变量以读取PHP会话。例如
var options = {    
    beforeSubmit: function(arr, $form, options) {              
        if ( !$form.valid() ) {
            return false;
        }
    },
    ...
}
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;
            }           
        });
    },
    ...
}