2016-01-20 65 views
1

我正在制作一个类似向导的网页表单,分成多个fieldset。因此,inputrequired属性在您到达提交完整表单的最后一张幻灯片之前不起作用。但是,由于只显示当前的fieldset,因此如果您在以前的fieldset中忘记填写required,则不会收到警报。单选按钮值不为空

这就是为什么我想要实现一些jQuery的一个检查input具有属性required的价值,所以用户不必8页结束,并试图提交表单,不知道他/她忘记填写第012页的required

我遇到的问题是输入为radio。我知道我只需要将一个required添加到整个列表中,这个属性可以在HTML中工作,但是由于我的jQuery检查的值是[required],所以选择哪个单选按钮并不重要,该值始终是一个我加了需要。

JSFIDDLE

下面是一些HTML

<div class="description"> 
    Pladstype: 
</div> 
<div class="descriptionData"> 
    <select id="form_billet_pladstype" required> 
     <option value="" disabled selected>Vælg pladstype</option> 
     <option value="0">Ståpladser</option> 
     <option value="1">Siddepladser</option> 
     <option value="2">Sidde- og ståpladser</option> 
    </select> 
</div> 

<div class="description"> 
    Nummererede pladser: 
</div> 
<div class="descriptionData"> 
    <div class="descriptionData"> 
     <input required type="radio" value="ja" name="form_billet_nummererede" id="form_billet_nummererede_ja" class="descriptionData janej valid"><label for="form_billet_nummererede_ja">Ja</label> 
     <input type="radio" value="nej" name="form_billet_nummererede" id="form_billet_nummererede_nej" class="descriptionData janej valid"><label for="form_billet_nummererede_nej">Nej</label> 
    </div> 
</div> 

<div class="description"> 
    Billet-nr.: 
</div> 
<div class="descriptionData"> 
    <select name="form_ticketType" id="form_ticketType" required> 
     <option value="" disabled selected>Vælg billetnr.</option> 
     <option value="0">Type 0 - Unummereret plads</option> 
     <option value="14">Type 14 - Unummererede m. niveau, række og plads</option> 
     <option value="15">Type 15 - Alle felter</option> 
    </select> 
</div/> 

jQuery的

var requiredFields = $(element).find('#' + stepName + ' [required]') 
requiredFields.each(function(idx, elem) { 
    var val = $(elem).val(); 
    alert(val); 
}); 

我现在明白了,写这个问题后,对于该radio的值总是一个我已经添加了required,但我该如何解决这个问题,因此当页面加载时它的值实际上为null,并且在选择其中一个选项时刚刚得到值checked(或实际值,但不是必需的)?

简单的出路是在加载时选择一个盒子,然后他可以选择另一个盒子,但是我想知道是否可以从无线电输入的空值开始,但仍然使用required

+0

应的空间是id'之间''[需要]''在 '#' + stepName + '[需要]''? – guest271314

+0

是的,因为它需要从当前可见的fieldset中获得所有'[required]'(以'#'+ stepName'为目标) – Rvervuurt

+0

不正确的解释要求吗?当选择'option'时,将'input required'设置为'true'? – guest271314

回答

-1
var requiredFields = $(element).find('#' + stepName + ':required') 

这将是您的解决方案。

+0

''[required]'或':required'基本上是一样的。检查我更新的小提琴:https://jsfiddle.net/mepLaorr/2/ – Rvervuurt

0

我已通过添加一个额外的隐藏radio按钮解决了该问题。这个单选按钮具有属性required,所以如果既没有选择是或否,HTML仍然将这些单选按钮看作空的。

由于隐藏的单选按钮的值是null,将检查值是否为空的代码将注册为空。

我已经添加了几行jQuery,它从隐藏的单选按钮中删除required并将其添加到选定的一个,所以我实际上获取了所选的值(即使这并不是真的必要,只知道选择了一件就够了)。

$('#form_billet_nummererede_ja').bind('click', function(e) { 
    $('#form_billet_nummererede_hidden').removeAttr('required'); 
    $('#form_billet_nummererede_ja').attr('required', true); 
}) 

$('#form_billet_nummererede_nej').bind('click', function(e) { 
    $('#form_billet_nummererede_hidden').removeAttr('required'); 
    $('#form_billet_nummererede_nej').attr('required', true); 
}) 

Updated fiddle.