2012-07-12 96 views
0

我有一个与bassistance validate plugin验证的表单。这一切都工作得很好(顺便说一下,很棒的插件),但我想禁用提交按钮,直到表单有效。根据作者JörnZaefferer(read comment here),我必须跟踪所有字段的有效性,然后启用按钮。禁用提交按钮,直到表单有效

因此,我认为我首先必须找到类名为'required'的所有字段,然后检查它们是否也有'有效'类,然后最终启用按钮...但我是真的很难做到这一点(我已经花了3.5小时,这让我疯狂!)

我试图绑定我的输入字段,以侦听'有效'类使用计时器技术是proposed here,并提出有以下情况:

function doneTyping() { 

var requiredFields = $('input').hasClass('required'); 

$(requiredFields).each(function(){ 
    if ($(this).hasClass('valid')){ 
     console.log('form is valid, enable button here'); 
    } else { 
     console.log('form is not valid yet'); 
    } 
}); 

}

但是我的代码不工作...有人可以告诉我,如果我正朝着正确的方向前进吗?

+0

什么时候'doneTyping'功能火? – 2012-07-12 14:48:37

回答

2
function doneTyping() { 

var requiredFields = $('input.required'); 

    if ($("input.required:not(:valid)").length){ 
     console.log('form is not valid, disable button here'); 
    } else { 
     console.log('form is valid '); 
    } 

} 
+0

非常感谢您的回复。我现在几乎可以工作:) 我的textarea似乎有某种延迟。我将我的代码上传到jsfiddle,如果有人会这么友好并且看一看。 (没关系我的fugly css) http://jsfiddle.net/WYB6N/3/ 非常感谢! – Emma 2012-07-12 16:04:27

+0

好吧,我想出了为什么延迟 - 验证类不会添加,直到blur事件触发。现在我只需要找出解决方法! – Emma 2012-07-12 17:01:25

0

可以检查的形式使用下面的想法是有效的,根据乌拉圭回合的插件

alert (($("#Form1").validationEngine('validate'))); 

这会给你一个真或假的值,并根据您可以显示或隐藏按钮。

最初使用隐藏按钮:

$(document).ready(function() 
{ 
    $("#ButtonSubmit).hide(); 
} 
+0

错误的验证插件,很抱歉! :) – Ryley 2012-07-12 16:37:00

+0

@Ryley我只是给她一个想法不像你投票其他人帮助..gr8工作 – osaka 2012-07-12 21:30:34

+0

嗯,我不知道如何解决这个问题,但我知道你的答案建议使用一个完全不同的插件,所以你的答案充其量也是无用的,最坏的情况是误导。这就是[downvotes](http://stackoverflow.com/faq#behonest)的意思,这没什么个人的! – Ryley 2012-07-12 22:44:18

相关问题