我有一组收音机,您可以在其中选择金额。最后一个选项是其他。我希望该选项在检查后显示金额字段。这是使用jquery mobile构建的。
<fieldset data-role="controlgroup">
<legend>Select Amount</legend>
<input type="radio" name="amount" id="50" value="50" checked="checked"/>
<label for="50">$50</label>
<input type="radio" name="amount" id="100" value="100"/>
<label for="100">$100</label>
<input type="radio" name="amount" id="250" value="250"/>
<label for="250">$250</label>
<input type="radio" name="amount" id="500" value="500"/>
<label for="500">$500</label>
<input type="radio" name="amount" id="1000" value="1000"/>
<label for="1000">$1000</label>
<input type="radio" name="amount" id="other" value="other"/>
<label for="other">Other</label>
<div id="enter_amount">
<label for="other_amount">Enter Amount:</label>
<input type="text" name="other_amount" id="other_amount" value="" data-theme="d" />
</div>
</fieldset>
我需要写什么才能工作?我目前正在尝试以下方法:
$(document).ready(function(){
$("#enter_amount").css("display","none");
$("#other").click(function(){
if ($('#other:checked')) {
$("#enter_amount").slideDown("slow"); //Slide Down Effect
} else {
$("#enter_amount").slideUp("slow"); //Slide Up Effect
}
});
});
不幸的是,除了在加载时隐藏输入框之外,这不起作用。
答案 0 :(得分:2)
使用.change而不是.click。此外,我修改了您的代码以解决其他一些情况。 这是一个fiddle。
$(document).ready(function(){
$('#enter_amount').hide();
$('fieldset :radio').change(function(){
if( this.id === 'other' )
$('#enter_amount').slideDown('slow');
else if( $('#enter_amount').is(':visible') )
$('#enter_amount').slideUp('slow');
});
});
答案 1 :(得分:1)
这些是单选按钮,因此当选中另一个单选按钮时,默认情况下将取消选中其他按钮。因此,您应该绑定名称为“amount”的所有输入。此外,使用jQuery.is()将是查看复选框是否已选中的更好方法。还可以使用jQuery.change()事件
$(document).ready(function(){
$("#enter_amount").css("display","none");
$('input[name="amount"]').change(function(){
if ($(this).is('#other')) {
$("#enter_amount").slideDown("slow"); //Slide Down Effect
} else {
$("#enter_amount").slideUp("slow"); //Slide Up Effect
}
});
});
这是一个工作小提琴http://jsfiddle.net/jafmC/13/
答案 2 :(得分:0)
您必须将其更改为:
if ($(this).is(":checked")) {
$("#enter_amount").slideDown("slow"); //Slide Down Effect
} else {
$("#enter_amount").slideUp("slow"); //Slide Up Effect
}
答案 3 :(得分:0)
试试这个
$(document).ready(function(){
$("#enter_amount").css("display","none");
$("#other").click(function(){
if ($(this).is(':checked')) {
$("#enter_amount").slideDown("slow"); //Slide Down Effect
} else {
$("#enter_amount").slideUp("slow"); //Slide Up Effect
}
});
});
答案 4 :(得分:0)
因为你不再真正与单选按钮本身交互(使用Firebug,Web Inspector或Dragonfly中的'inspect element'功能来查看),而是使用jQuery Mobile(或jQuery UI)提供的元素,你必须修改你的选择器:
$(document).ready(function() {
$("#enter_amount").css("display", "none");
$(".ui-radio").click(function() {
if ($(this).has('#other') && $(this).has('.ui-icon-radio-on')){
$('#enter_amount').slideDown(500); // works
}
else {
$('#enter_amount').slideUp(500); // doesn't yet work
}
});
});
<小时/> 已编辑( 相当 有些恼怒,我必须承认)添加改进的(即'正常')
if
/ {{ 1}}检查:
else
答案 5 :(得分:0)
$(document).ready(function(){
$("#enter_amount").hide();
$("input[name='amount']").change(function(){
if($(":checked").val() == "other"){
$("#enter_amount").slideDown("slow"); //Slide Down Effect
} else {
$("#enter_amount").slideUp("slow"); //Slide Up Effect
}
});
});
你可以试试这个