2012-01-18 25 views
0

我创建了多部分表单并需要验证表单上可见字段集中的完整字段。如果所有必填字段都已完成,则会启用下一步按钮。禁用提交按钮,直到所有字段具有多部分表单上的值

到目前为止,我已经打了几个选项,其中没有一个是100%有效

HTML:

<div id="set1"> 
    <fieldset> 
    <div> 
    <label>field 1</label> 
    <input name="f1" type="text" /><br /> 
    <span class="error"></span> 
    </div> 
    <div> 
    <label>field 2</label> 
    <input name="f2" type="text" /><br /> 
    </div> 
    </fieldset> 
</div> 
<div id="set2"> 
    <fieldset> 
    <div> 
    <label>field 3</label> 
    <input name="f3" type="text" /><br /> 
    <span class="error"></span> 
    </div> 
    . 
    . 
    . 
    </fieldset> 
</div> 

的jQuery:

$input = $('fieldset:visible div:has(span[class="error"]) input'); 
$next = $('fieldset:visible .button'); 
$input.keyup(function() { 
    $input.each(function() { 
    var trigger = false; 
    $input.each(function() { 
     if (!$(this).val()) { 
     trigger = true; 
     } 
    }); 
    trigger ? $next.attr('class', 'disable') : $next.removeAttr('class');       
    }); 
}); 

有人能帮助我了解我是什么做错了?看起来keyup事件没有解雇。

回答

0

你应该使用jQuery验证器。它将使你的生活轻松了许多:

jQuery Validation

+0

我很清楚这一点,但无法在此项目中使用它。我的验证正在工作,我只是有问题检测现场状态,每个面板完成或不完整。 – designmode 2012-01-18 14:22:00

0

第一件事,KeyUp事件将被解雇,不用担心。第二件事,在行if (!$(this).val()) {有一个严重的错误这个拼写错误导致了标准javascript的思考。翻译成它你想测试这个值是否存在。事实是,价值永远存在。这只是“”或一个真正的价值。

看看my example。经过一些修正后,希望它能够正常工作。

+0

在这里和那里稍微调整,看起来像我有触发器现在工作,但似乎我遇到了一个新问题。我的for包含两种类型的表单元素,select和input。绑定这些事件会产生不同的结果。你知道任何绑定这些方法或者至少在它们之间建立关系的方法 - [例子](http://jsfiddle.net/designmode/Jb7pg/10/)。 – designmode 2012-01-19 10:23:16

+0

没有任何代码我只能猜测。猜测解决方案不是最好的方法。你可以在jsfiddle.net上创建一个当前代码的工作示例吗? – reporter 2012-01-19 10:46:20

+0

我在之前的评论“例子”中提供了一个。这是一个[工作演示](http://jsfiddle.net/designmode/Jb7pg/10/) – designmode 2012-01-19 12:36:29

相关问题