2016-03-11 2 views
0

Я уже видел эту нить: Add required attribute when radio is checked, однако ответы не нацелены на идентификатор конкретного переключателя, а только имя. Я не могу добиться того, что хочу, используя подход имен, поскольку имена должны быть одинаковыми для моих параметров радио, см. HTML, чтобы понять, что я имею в виду.Добавить обязательный атрибут, если поля видны

В приведенном ниже коде показан переключатель с двумя параметрами. Он показывает #ifYes div ТОЛЬКО, когда установлен параметр #yesCheck радио. Он скрывается, если проверен #noCheck.

Моя проблема

В то же время #ifYes раскрывается я хочу, чтобы добавить необходимый атрибут для 2 входов в #ifYes (#businessname and #regnum). required атрибут также удаляется, когда #ifYes скрыт.

jsFiddle

HTML

<label>Are you a business or consumer?</label> 
<span>Business</span><input type="radio" onclick="javascript:yesnoCheck();" value="Business" name="customer[note][Business or Consumer?]" id="yesCheck" required/><br/> 
<span>Consumer</span><input type="radio" onclick="javascript:yesnoCheck();" value="Consumer" name="customer[note][Business or Consumer?]" id="noCheck" /><br/> 

<div id="ifYes"> 
    <label for="businessname">Business name</label> 
    <input id="businessname" type="text" name="customer[note][Business Name]" placeholder="Business Name" /> 
    <label for="regnum">Business Registration No.</label> 
    <input id="regnum" type="text" name="customer[note][Business Reg No.]" placeholder="Business Registration No." /> 
</div> 

JS

function yesnoCheck() { 

    if($('#yesCheck').is(':checked')) { 
    $('#ifYes').addClass('yarp'); 
    $('#businessname').attr('required');​​​​​ 
    } else { 
    $('#ifYes').removeClass('yarp'); 
    $('#businessname').removeAttr('required');​​​​​ 
    } 

} 

ответ

0

$('#businessname').attr('required');​​​​​извлекает значение атрибута. Чтобы установить, вы должны дать значение, чтобы установить: $('#businessname').attr('required', 'required');​​​​​

Но required и подобные, то лучше использовать отраженное свойство вместо этого. Чтение: x = $('#businessname').prop('required');, написание: $('#businessname').prop('required', true); или $('#businessname').prop('required', false);.

+0

Это сделало трюк. Спасибо за объяснение – egr103