0

この質問で受け入れられた回答に基づいて、以下の作業を行っています。

これがどのように機能するかについては、このリンクを参照してください

<form action="" name="testform" method="post" id="testform">
<div id='div_block1'>
<input type="text" value="" name="a[]" class='input_text'>
<input type="text" value="" name="b[]" class='input_text'>
<input type="text" value="" name="c[]" class='input_text'>
<select id='block1'>
    <option value="" data-value=""></option>
    <option value="1" data-value="11,12,13">1</option>
    <option value="2" data-value="21,22,23">2</option>
    <option value="3" data-value="31,32,33">3</option>
    <option value="4" data-value="41,42,43">4</option>
    <option value="5" data-value="51,52,53">5</option>
</select>     
</div>
<div id='div_block2'>        
<input type="text" value="" name="a[]" class='input_text'>
<input type="text" value="" name="b[]" class='input_text'>
<input type="text" value="" name="c[]" class='input_text'>
<select id='block2'>
    <option value="" data-value=""></option>
    <option value="1" data-value="11,12,13">1</option>
    <option value="2" data-value="21,22,23">2</option>
    <option value="3" data-value="31,32,33">3</option>
    <option value="4" data-value="41,42,43">4</option>
    <option value="5" data-value="51,52,53">5</option>
</select>     
</div>
</form>
<script>
$(function() {
$('select').on('change', function() {
    var div_id = 'div_'+$(this).attr('id');
    var select_val = $(this).find('option:selected').data('value');
    console.log();
        if( select_val != '' ) {
            var a = select_val.split(',');
            $('div#'+div_id+' input[name="a[]"]').val(a[0]);
            $('div#'+div_id+' input[name="b[]"]').val(a[1]);
            $('div#'+div_id+' input[name="c[]"]').val(a[2]);
        } else {
            $('div#'+div_id+' input.input_text').val('');
            }
    });
});    
</script>

たとえば、1を選択すると、a []、b []、c []の2つの値が得られるように、少し変更したいと思います

私は以下のことをしました

<form action="" name="testform" method="post" id="testform">
<div id='div_block1'>
<input type="text" value="" name="a[]" class='input_text'>
<input type="text" value="" name="b[]" class='input_text'>
<input type="text" value="" name="c[]" class='input_text'>
<input type="text" value="" name="a[]" class='input_text'>
<input type="text" value="" name="b[]" class='input_text'>
<input type="text" value="" name="c[]" class='input_text'>        
<select id='block1'>
    <option value="" data-value=""></option>
    <option value="1" data-value="11,12,13,6,12,8">1</option>
    <option value="2" data-value="21,22,23,8,10,33">2</option>
    <option value="3" data-value="31,32,33,2,8,6">3</option>
    <option value="4" data-value="41,42,43,22,54,63">4</option>
    <option value="5" data-value="51,52,53,12,34,55">5</option>
</select>     
</div>
<div id='div_block2'>        
<input type="text" value="" name="a[]" class='input_text'>
<input type="text" value="" name="b[]" class='input_text'>
<input type="text" value="" name="c[]" class='input_text'>
<input type="text" value="" name="a[]" class='input_text'>
<input type="text" value="" name="b[]" class='input_text'>
<input type="text" value="" name="c[]" class='input_text'>
<select id='block2'>
    <option value="" data-value=""></option>
    <option value="1" data-value="11,12,13,95,44,32">1</option>
    <option value="2" data-value="21,22,23,12,35,51">2</option>
    <option value="3" data-value="31,32,33,21,12,24">3</option>
    <option value="4" data-value="41,42,43,35,52,15">4</option>
    <option value="5" data-value="51,52,53,23,42,15">5</option>
</select>     
</div>
</form>    

フィドルを参照してください。最初のものがどのように機能したかについての私の理解から、これは機能すると思いましたが、a[]、b[]、c[] の最後の値のみを使用しています (例: 11 ではなく 6,12,8,6,12,8)。 1を選択すると12,13,6,12,8。

これを希望どおりに機能させるには、他に何を追加する必要がありますか?

4

2 に答える 2

1

これを使って:

    <input type="text" value="" name="a[0]" class='input_text'>
    <input type="text" value="" name="b[0]" class='input_text'>
    <input type="text" value="" name="c[0]" class='input_text'>
    <input type="text" value="" name="a[1]" class='input_text'>
    <input type="text" value="" name="b[1]" class='input_text'>
    <input type="text" value="" name="c[1]" class='input_text'> 

この:

        $('div#'+div_id+' input[name="a[0]"]').val(a[0]);
        $('div#'+div_id+' input[name="b[0]"]').val(a[1]);
        $('div#'+div_id+' input[name="c[0]"]').val(a[2]);
        $('div#'+div_id+' input[name="a[1]"]').val(a[3]);
        $('div#'+div_id+' input[name="b[1]"]').val(a[4]);
        $('div#'+div_id+' input[name="c[1]"]').val(a[5]);
于 2012-07-24T13:20:16.307 に答える
1

JSを単純化しました

入力のフラグに合わせてクラスを追加します

<div>
    <form action="" name="testform" method="post" id="testform">
    <div id='div_block1'>
        <input type="text" value="" name="a[]" class='input_text flag'>
        <input type="text" value="" name="b[]" class='input_text flag'>
        <input type="text" value="" name="c[]" class='input_text flag'>
        <input type="text" value="" name="a[]" class='input_text flag'>
        <input type="text" value="" name="b[]" class='input_text flag'>
        <input type="text" value="" name="c[]" class='input_text flag'>
        <select id='block1'>
        <option value="" data-value=""></option>
        <option value="1" data-value="11,12,13,6,12,8">1</option>
        <option value="2" data-value="21,22,23,8,10,33">2</option>
        <option value="3" data-value="31,32,33,2,8,6">3</option>
        <option value="4" data-value="41,42,43,22,54,63">4</option>
        <option value="5" data-value="51,52,53,12,34,55">5</option>
        </select>     
    </div>
    <div id='div_block2'>        
        <input type="text" value="" name="a[]" class='input_text flag'>
        <input type="text" value="" name="b[]" class='input_text flag'>
        <input type="text" value="" name="c[]" class='input_text flag'>
        <input type="text" value="" name="a[]" class='input_text flag'>
        <input type="text" value="" name="b[]" class='input_text flag'>
        <input type="text" value="" name="c[]" class='input_text flag'>
        <select id='block2'>
        <option value="" data-value=""></option>
        <option value="1" data-value="11,12,13,95,44,32">1</option>
        <option value="2" data-value="21,22,23,12,35,51">2</option>
        <option value="3" data-value="31,32,33,21,12,24">3</option>
        <option value="4" data-value="41,42,43,35,52,15">4</option>
        <option value="5" data-value="51,52,53,23,42,15">5</option>
        </select>     
    </div>
    </form>
<div>

次のJSを使用します

$(function() {
$('select').on('change', function() {
    var div_id = 'div_'+$(this).attr('id');
    var select_val = $(this).find('option:selected').data('value');
    console.log();
    if( select_val != '' ) {
        var a = select_val.split(',');
        var count = 0;
        $('div#'+div_id+' .flag').each(function() {
            $(this).val(a[count]);
            ++count;
        });
    } else {
        $('div#'+div_id+' input.input_text').val('');
    }
});

}); </p>

于 2012-07-24T13:41:11.253 に答える