0

以下のコードがあります。実行すると、「はい」と書かれた行が表示されると思っていましたが、最後の行(「処理中」)が表示されます。なんで?

jsfiddle

<input type="radio" name="negotiation" value="0" checked="checked">Yes
<input type="radio" name="negotiation" value="1">No
<input type="radio" name="negotiation" value="2">On process


<table>
    <tr class="answer_yes"><td>Yes</td></tr>
    <tr class="answer_no" ><td>No</td></tr>
    <tr class="answer_on_process"><td>On process</td></tr>
</table>

<script type="text/javascript">
    $('input[name=negotiation]').change(function(){
        $('tr').hide();
        if($(this).val() == '0')
        {
            $('.answer_yes').show();
        }
        else if($(this).val() == '1')
        {
            $('.answer_no').show();
        }
        else if($(this).val() == '2')
        {
            $('.answer_on_process').show();
        }
    }).change();
</script>
4

2 に答える 2

2

$('input [name = 社案]')。change()を手動で呼び出すため、3回トリガーされます。if条件は、現在の無線が選択されているかどうかをチェックせず、OnProcessが最後の無線であるため、最後の行(On Process)が表示されます。

こちらのデモをご覧くださいhttp://jsfiddle.net/dkdkj/6/

$('input[name=negotiation]').change(function(){
    if(!$(this).is(":checked"))
        return;

    $('tr').hide();

    if($(this).val() == '0')
    {
        $('.answer_yes').show();
    }
    else if($(this).val() == '1')
    {
        $('.answer_no').show();
    }
    else if($(this).val() == '2')
    {
        $('.answer_on_process').show();
    }
}).change();
于 2013-01-21T07:40:15.220 に答える
0

以下のコードを試してください

<input type="radio" name="negotiation" value="0" checked="checked">Yes</option>
<input type="radio" name="negotiation" value="1">No</option>
<input type="radio" name="negotiation" value="2">On process</option>


<table>
    <tr class="answer_yes"><td>Yes</td></tr>
    <tr class="answer_no" ><td>No</td></tr>
    <tr class="answer_on_process"><td>On process</td></tr>
</table>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    function show_hide(values)
    {
        $('tr').hide();
        if(values == '0')
        {
            $('.answer_yes').show();
        }
        else if(values == '1')
        {
            $('.answer_no').show();
        }
        else if(values == '2')
        {
            $('.answer_on_process').show();
        }
    }

    $(document).ready(function()
    {
        var first_to_show = $('input[name=negotiation]').val();
        show_hide(first_to_show);

        $('input[name=negotiation]').change(function()
        {
            show_hide($(this).val());
        });
    });


</script>
于 2013-01-21T07:40:07.420 に答える