2017-03-16 179 views
0

我在单选按钮上有两个单选按钮,它应该显示div和隐藏div。下面是我的脚本,我不明白为什么它不起作用。如何根据单选按钮选择显示和隐藏div

的JavaScript

$(document).ready(function() { 
 
    $(".text").show(); 
 
    $(".text1").hide(); 
 
    $("#r1").click(function() { 
 
    $(".text").show(); 
 
    $(".text1").hide(); 
 
    }); 
 

 
    $("#r2").click(function() { 
 
    $(".text1").show(); 
 
    $(".text").hide(); 
 
    }); 
 

 
});

HTML

<p>Show textboxes 
    <input type="radio" name="radio1" id="r1" checked value="Show" onClick="getResults()">Do nothing 
    <input type="radio" name="radio1" id="r2" onClick="getResults()" value="Show"> 
</p> Wonderful textboxes: 
<div class="text"> 
    <p>Textbox #1 
    <input type="text" name="text" id="text" maxlength="30"> 
    </p> 
    <p>Textbox #2 
    <input type="text" name="text" id="text" maxlength="30"> 
    </p> 
</div> 

<div class="text1"> 
    <p>Textbox #3 
    <input type="text" name="text1" id="text1" maxlength="30"> 
    </p> 
    <p>Textbox #4 
    <input type="text" name="text2" id="text1" maxlength="30"> 
    </p> 
</div> 

here is jsfiddle link

+0

你在控制台得到一个错误?我收到一个错误'未捕获的引用错误:未定义getResults'。看起来不像您的示例中设置的方法。 – Pango

回答

2

使用change()事件处理程序来处理更改事件并使用带有布尔参数的toggle()方法切换元素状态。

$(document).ready(function() { 
 
    // attach change event handler 
 
    $("#r1,#r2").change(function() { 
 
    // toggle based on the id 
 
    $(".text").toggle(this.id == 'r1'); 
 
    $(".text1").toggle(this.id == 'r2'); 
 
    // trigger change event to hide initially 
 
    }).first().change(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<p>Show textboxes 
 
    <input type="radio" name="radio1" id="r1" checked value="Show">Do nothing 
 
    <input type="radio" name="radio1" id="r2" value="Show"> 
 
</p> Wonderful textboxes: 
 
<div class="text"> 
 
    <p>Textbox #1 
 
    <input type="text" name="text" maxlength="30"> 
 
    </p> 
 
    <p>Textbox #2 
 
    <input type="text" name="text" maxlength="30"> 
 
    </p> 
 
</div> 
 

 
<div class="text1"> 
 
    <p>Textbox #3 
 
    <input type="text" name="text1" maxlength="30"> 
 
    </p> 
 
    <p>Textbox #4 
 
    <input type="text" name="text2" maxlength="30"> 
 
    </p> 
 
</div>


FYI:属性应该是在页面上唯一的,一组元素使用类属性否则,只能使用该ID的第一个元素都被选择同时使用ID选择。

+0

虽然这个工作,但使用相同的ID是不是很好的做法。请检查您的代码。你必须添加一个关于这个的注释并且改正('id =“text”''id =“text1”'重复) –

+0

@AlivetoDie:它在这里没有任何作用....无论如何,我将添加为注意 –

+0

我知道id在这里没有任何作用。但我只是在谈论convention.thanks –

0

你的代码看起来很好。使其确保您添加JQuery的正确

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 
    $(".text").show(); 
    $(".text1").hide(); 
    $("#r1").click(function() { 
    $(".text").show(); 
    $(".text1").hide(); 
    }); 

    $("#r2").click(function() { 
    $(".text1").show(); 
    $(".text").hide(); 
    }); 

}); 
</script> 
0

你的代码工作正常后添加了jQuery参考。

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 
相关问题