我有一个带有文本输入和单选按钮对的表单,用于选择是/否。为了保持这一点,单选按钮单击事件检查值,如果是,则显示输入文本字段。如果不是,则隐藏输入字段。我还检查文档就绪的初始状态并显示/隐藏输入文本字段。
我发现单击No会导致使用jQuery .hide()方法隐藏输入。但是当我选择Yes时,生成的.show()方法调用不会显示输入。如果我将收音机设置为是然后刷新页面,则输入显示正常。
Firebug显示没有输入标记。这就像点击No radio删除了来自DOM的输入。
这是JS代码示例:
$(document).ready(function() {
if ($('#cost_sharing_yes').attr('checked') == 'checked') {
$('input#Institutional_CS_TP').show();
} else {
$('input#Institutional_CS_TP').hide();
}
$('#cost_sharing_yes').click(function() {
$('input[id="Institutional_CS_TP"]').show();
});
$('#cost_sharing_no').click(function() {
$('input#Institutional_CS_TP').fadeOut("fast");
});
}
答案 0 :(得分:2)
您因关闭就绪功能而遗漏)
:
$(document).ready(function() {
} // <--
要获得输入的checked
属性,应使用prop
方法而不是attr
。
$(document).ready(function() {
var isChecked = $('#cost_sharing_yes').prop('checked');
$('#Institutional_CS_TP').toggle(isChecked);
// ..
})
答案 1 :(得分:0)
我发现了我的问题。这是一个自我造成的编码问题。 为了保持示例简单,我已经删除了混合中的另一个函数调用,我认为这个问题没有任何影响。我错了。在那个功能中我有
$('td#Institutional_CS_TP).text('$0');
$('input[name="Institutional_CS_TP"]').val('0.00');
这导致仅显示td值,而不是同一td内的输入。 我的td和td中的输入标签都具有相同的ID值......不是一个好主意。
答案 2 :(得分:0)
html代码
<div id="myRadioGroup">
Value Based<input type="radio" name="cars" value="2" />
Percent Based<input type="radio" name="cars" value="3" />
<br>
<div id="Cars2" class="desc" style="display: none;">
<br>
<label for="txtPassportNumber">Commission Value</label>
<input type="text" id="txtPassportNumber" class="form-control" name="commision_value" />
</div>
<div id="Cars3" class="desc" style="display: none;">
<br>
<label for="txtPassportNumber">Commission Percent</label>
<input type="text" id="txtPassportNumber" class="form-control" name="commision_percent" />
</div>
</div>
jQuery代码
function myFunction() {
var x = document.getElementById("myInput");
if (x.type === "password") {
x.type = "text";
} else {
x.type = "password";
}
}
function myFunction1() {
var y = document.getElementById("myInput1");
if (y.type === "password") {
y.type = "text";
} else {
y.type = "password";
}
}