Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery验证插件-只要表单有效_Jquery_Jquery Plugins_Jquery Validate - Fatal编程技术网

jQuery验证插件-只要表单有效

jQuery验证插件-只要表单有效,jquery,jquery-plugins,jquery-validate,Jquery,Jquery Plugins,Jquery Validate,关于jQuery验证的问题。当我的表单加载时,我有50%不透明度的提交按钮,让用户知道它已被禁用 一旦表单满足所有规则,onkeyup,我如何检测并允许我将提交按钮的不透明度返回到100% “success:function(label){”已经很晚了,因为要求用户转到下一个字段,而这在我的应用程序中并不适用 想法?我用另一种方式来表达。 您在服务器上有表单验证,是吗?为什么要在客户端和服务器上两次验证表单数据 我的解决方案是使用ajax将表单发送到服务器,在服务器上进行验证,如果没有错误,则保

关于jQuery验证的问题。当我的表单加载时,我有50%不透明度的提交按钮,让用户知道它已被禁用

一旦表单满足所有规则,onkeyup,我如何检测并允许我将提交按钮的不透明度返回到100%

“success:function(label){”已经很晚了,因为要求用户转到下一个字段,而这在我的应用程序中并不适用

想法?

我用另一种方式来表达。 您在服务器上有表单验证,是吗?为什么要在客户端和服务器上两次验证表单数据

我的解决方案是使用ajax将表单发送到服务器,在服务器上进行验证,如果没有错误,则保存数据(或其他…)。 若服务器验证器发现一些错误,则返回表单(在json…)并在客户端显示错误

帮帮忙?
Martin

您可以使用轻松劫持验证机制回调。下面是一个示例(也可以使用):


$(函数(){
变量按钮=$(“#submit1”);
功能按钮句柄(验证器){
var errors=validator.numberOfInvalids();
如果(错误===0){
按钮。removeAttr(“禁用”);
}否则{
button.attr('disabled','disabled');
}
}
$('#form1')。验证({
规则:{
text1:{required:true}
},
errorPlacement:函数(错误,元素){
错误。插入符(元素);
按钮手柄(此);
},
突出显示:函数(元素、errorClass、validClass){
$(元素).addClass(错误类);
$(元素).removeClass(有效类);
按钮手柄(此);
},
取消高亮显示:函数(元素、errorClass、validClass){
$(元素).addClass(有效类);
$(元素).removeClass(错误类);
按钮手柄(此);
}
}).form();//触发器验证
});


这里的关键是在任何用户输入(使用该方法)之前触发验证,因此jquery.validate开始侦听输入事件,并在键(和其他)事件触发时开始触发回调。

这是一种糟糕的用户体验。当您遇到一些难以验证的问题时(是数据库中的电子邮件,…),唯一的方法是将数据发送到服务器并在那里进行验证。为什么体验不好?谢谢,但代码太多了。我不知道添加了什么和没有添加什么?高亮显示和高亮显示是验证的一部分吗?errorPlacement、highlight和unhighlight是验证方法的选项,在验证程序显示/隐藏/显示错误消息时调用验证后。该示例注入了一个自定义处理程序(buttonHandler),该处理程序根据验证程序的状态处理submit按钮的disabled属性。我更新了答案,您只需将代码复制粘贴到一个空白html文件中,然后自己试用。我还将其放在jsbin上,您可以在线试用
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
</head>
<body>
<script>
$(function() {
    var button = $('#submit1');
    function buttonHandler(validator) {
        var errors = validator.numberOfInvalids();
        if(errors === 0) {
            button.removeAttr('disabled');
        } else {
            button.attr('disabled', 'disabled');
        }
    }

    $('#form1').validate({
        rules: {
            text1: { required: true }
        },
        errorPlacement: function (error, element) {
            error.insertAfter(element);
            buttonHandler(this);
        },
        highlight: function (element, errorClass, validClass) {
            $(element).addClass(errorClass);
            $(element).removeClass(validClass);
            buttonHandler(this);        
        },
        unhighlight: function (element, errorClass, validClass) {
            $(element).addClass(validClass);
            $(element).removeClass(errorClass);
            buttonHandler(this);
        }
    }).form(); // trigger validation
});
</script>
    <form id="form1" action="#">
        <input id="text1" name="text1" type="text" /><br/>
        <input id="submit1" name="submit1" type="submit" value="Test" disabled="disabled" />
    </form>
</body>
</html>