0

私は以下の方法でdrown boxを関連付けました

$('#cboUsuario').on('change',
            function cargarAccesos(){
                var username = $('#cboUsuario').val();
                $.get('listEmpresasAcceso', {usuario: username, accion: 'SELECT'}, function(responseJson) {
                    $('#tblAccesosEmpresa').empty();
                    $('#tblAccesosEmpresa').append('<tr><td></td><td>Empresa</td></tr>');
                    for(var i = 0; i < responseJson.length; i++){
                        $check = '<input id="id' + responseJson[i].id + '" type="checkbox" value="' + responseJson[i].id + '" onclick="insertarAcceso(this)">';
                        $empresa = responseJson[i].descripcion;
                        $row = $('<tr><td>' + $check + '</td><td>' + $empresa + '</td></tr>');
                        $('#tblAccesosEmpresa').append($row);
                        $('#id' + responseJson[i].id).prop('checked', responseJson[i].flagAcceso == "1" ? true : false);
                    }
                });
            }
        );

GET 関数では、データベースからデータをロードするサーブレットを呼び出します。これはドラウボックス

<select id="cboUsuario" onchange="cargarAccesos()">

これらがdrownボックスの値であると仮定します:

<option value="1">Default Value</option>
<option value="2">Car</option>
<option value="3">Phone</option>
<option value="4">Computer</option>

Car オプションを選択すると、change() 関数が呼び出され、GET 関数も呼び出されます。電話オプションを選択すると、change() 関数が新たに呼び出され、GET 関数も呼び出されます。しかし、Car オプションを再度選択すると、change() 関数が呼び出されますが、GET 関数は呼び出されません。GET 関数はサーブレットを呼び出さず、最初に呼び出されたときの古い値のみを返します。

誰が何が起こっているのか説明できますか?

4

2 に答える 2

0

1 つは jquery イベントから、もう 1 つは標準の JavaScript からの 2 つのトリガーが割り当てられています。jquery または標準の JavaScript を使用するようにコードを変更してください。

onchangehtmlでトリガーなしで次を実行します。

$('#cboUsuario').on('change',
        function (){
            var username = $('#cboUsuario').val();
            $.get('listEmpresasAcceso', {usuario: username, accion: 'SELECT'}, function(responseJson) {
                $('#tblAccesosEmpresa').empty();
                $('#tblAccesosEmpresa').append('<tr><td></td><td>Empresa</td></tr>');
                for(var i = 0; i < responseJson.length; i++){
                    $check = '<input id="id' + responseJson[i].id + '" type="checkbox" value="' + responseJson[i].id + '" onclick="insertarAcceso(this)">';
                    $empresa = responseJson[i].descripcion;
                    $row = $('<tr><td>' + $check + '</td><td>' + $empresa + '</td></tr>');
                    $('#tblAccesosEmpresa').append($row);
                    $('#id' + responseJson[i].id).prop('checked', responseJson[i].flagAcceso == "1" ? true : false);
                }
            });
        }
    );

またはイベントの添付ファイルを削除しonて、機能を持たせるだけです

        function cargarAccesos(){
            var username = $('#cboUsuario').val();
            $.get('listEmpresasAcceso', {usuario: username, accion: 'SELECT'}, function(responseJson) {
                $('#tblAccesosEmpresa').empty();
                $('#tblAccesosEmpresa').append('<tr><td></td><td>Empresa</td></tr>');
                for(var i = 0; i < responseJson.length; i++){
                    $check = '<input id="id' + responseJson[i].id + '" type="checkbox" value="' + responseJson[i].id + '" onclick="insertarAcceso(this)">';
                    $empresa = responseJson[i].descripcion;
                    $row = $('<tr><td>' + $check + '</td><td>' + $empresa + '</td></tr>');
                    $('#tblAccesosEmpresa').append($row);
                    $('#id' + responseJson[i].id).prop('checked', responseJson[i].flagAcceso == "1" ? true : false);
                }
            }
于 2013-06-28T02:16:51.210 に答える