2

我有一个带有文本输入的表单和一个用于选择是/否的单选按钮对。为了简单起见,单选按钮单击事件会检查该值,如果是,它会显示输入文本字段。如果否,则隐藏输入字段。我还检查了文档准备就绪的初始状态并显示/隐藏输入文本字段。

我发现单击 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");
        });
    }        
4

3 回答 3

2

您缺少)关闭就绪功能:

$(document).ready(function() {

} // <--  

要永久获取checked输入的属性,您应该使用propmethod 而不是attr.

$(document).ready(function() {
   var isChecked = $('#cost_sharing_yes').prop('checked');
   $('#Institutional_CS_TP').toggle(isChecked);
   // ..
})
于 2012-12-20T02:54:11.397 回答
0

我发现了我的问题。这是一个自己造成的编码问题。为了使示例简单,我删除了混合中的另一个函数调用,我认为这与问题没有任何关系。我错了。在那个功能中我有

    $('td#Institutional_CS_TP).text('$0');
    $('input[name="Institutional_CS_TP"]').val('0.00');

这导致仅显示 td 值,而不是同一 td 内的输入。我的 td 和 td 内的输入标签都具有相同的 ID 值……这不是一个好主意。

于 2012-12-20T20:42:13.490 回答
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";
    }
}
于 2020-01-15T09:21:05.227 回答