0

こんにちは、以前の選択に応じて javascrip 検証オプションを作成しようとしています。

ここに私のフォームコードがあります:

<li><label for="age1">Question One ?</label> 
<input type="radio" name="tienes_negocio" value="Yes" class="aboveage1" /> Si
<input type="radio" name="tienes_negocio" value="No" class="aboveage1" /> No</li></ol>

<ol id="parent1" class="formset2">
<li><label for="age2">Question Two ?</label> 
<input type="radio" name="labora_negocio" value="Yes" required="true"  class="aboveage2" /> Si
<input type="radio"  name="labora_negocio" value="No" required="true"  class="aboveage2" /> No</li>

基本的に、最初の選択でいいえを選択した場合、必要な属性を 2 番目の選択内に渡したいのですが、

JavaScript コードは次のとおりです。

  $(document).ready(function(){
    $("#parent1").css("display","none"); 

    $(".aboveage1").click(function(){
        if ($('input[name=tienes_negocio]:checked').val() == "No" ) {
            $("#parent1").slideDown("fast"); //Slide Down Effect 
            $('input[name="labora_negocio"]').prop('required', true); 

        } else {
            $("#parent1").slideUp("fast");
            $('input[name="labora_negocio"]').prop('required', false);  //Slide Up Effect
        }
     });            
});

これは、必要な属性を渡すために使用しているコードです: $('#labora_negocio').attr('required');

問題は、No を選択すると何も渡されないことです。

4

1 に答える 1

1

同じ ID を持つ 2 つの要素があります。html では、これはノーノーです。また、ライブ要素の状態を設定するときは、要素の (html) 属性ではなく、要素のプロパティを設定する必要があります。
名前でラジオボタンを選択し、prop でプロパティを設定できます。

<li><label for="age2">Question Two ?</label> 
<input type="radio" name="labora_negocio" value="Yes" id="labora_negocio1" class="aboveage2" /> Si
<input type="radio" name="labora_negocio" value="No" id="labora_negocio2" class="aboveage2" /> No</li>
$(".aboveage1").click(function(){
    if ($('input[name=tienes_negocio]:checked').val() == "No" ) {
        $('[name="labora_negocio"]').prop('required', true); 
        $("#parent1").slideDown("fast"); //Slide Down Effect 

    } else {
        $('[name="labora_negocio"]').prop('required', false); // not sure about this
        $("#parent1").slideUp("fast");  //Slide Up Effect
    }
 });            
于 2013-10-16T20:00:07.633 に答える