【问题标题】:Call javascript function from modal popup button从模式弹出按钮调用 javascript 函数
【发布时间】:2017-01-17 07:41:38
【问题描述】:

我无法完成这项工作。谁能帮帮我?

首先,我有一个页面会打开这样的模式弹出窗口:

<label class="h5"> <button id="btnPopup" name="btnPopup" type="button" class="btn-u-green" data-toggle="modal" data-target="#responsive">Clique aqui</button> <span id="txtEscolherEstabelecimento">para escolher o estabelecimento</span> </label>


<div class="modal fade bs-example-modal-lg" id="responsive" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg">  <div class="modal-content">         <div class="modal-header">          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>            <h4 class="modal-title" id="myModalLabel4">Escolha o Estabelecimento</h4>           <input type="hidden" name="nuEstabelecimentoEscolhido" />       </div>

        <div class="modal-body">            <div class="row">

                <label class="label">&nbsp;&nbsp;&nbsp;Qual o Estado?</label>
                <div class="col-md-6">
                    <label class="select">
                        <select id="cmbUf" name="cmbUf" class="form-control">
                            <option value="0">::: Selecione :::</option>
                            <?php
                            $ufs = $objUfs->getUfs($objConexao);
                            while($ufs = $objConexao->converterResultado()){
                                ?>
                                <option value="<?php echo $ufs['CoUf']?>"><?php echo $ufs['NoUf']?></option>
                            <?php }?>
                        </select>
                        <i></i>
                    </label>
                </div>          </div>

            <div class="row">
                <label class="label">&nbsp;&nbsp;&nbsp;Digite o nome para pesquisa</label>
                <div class="col-md-12">
                    <label class="input">
                        <i class="icon-append fa fa-search"></i>
                        <input type="text" id="NoEstabelecimentoPesquisa" name="NoEstabelecimentoPesquisa" placeholder="Digite o nome principal do Estabelecimento">
                    </label>
                </div>          </div>

            <div class="modal-footer">
                <button type="button" class="btn-u btn-u-default" id="btnPesquisarEstabelecimento" name="btnPesquisarEstabelecimento"><i class="fa fa-search"></i> Pesquisar</button>           </div>

            <table id="grdEstabelecimentosEncontrados" class="table" data-height="300" data-id-field="id" >
                <thead style="font-size: 12px;" >
                <tr>
                    <th data-field="Id" data-visible="false">Id</th>
                    <th data-field="NoEstabelecimento" data-visible="true">Nome</th>
                    <th data-field="NoTipoEstabelecimento" data-visible="true" >Tipo do Estabelecimento</th>
                    <th data-field="Endereco" data-visible="true">Endereço</th>
                    <th data-field="CidadeUf">Cidade/Uf</th>
                    <th data-field="Acao">Ação</th>
                </tr>
                </thead>
                <tbody style="font-size: 12px"></tbody>             </table>

        </div>

        <div class="modal-footer">          <button type="button" class="btn-u btn-u-default" data-dismiss="modal"><i class="fa fa-close"></i>Fechar</button>       </div>

    </div> </div>

打开模式后,我想从主页面调用 Javascript 的表格的每一行都有一个按钮,每一行如下所示:

<tbody style="font-size: 12px">
    <tr>
        <td>1</td>
        <td>Smaff Hyundai</td>
        <td>Particular</td>
        <td>Trecho SIA Trecho 1 - até 628 - lado par</td>
        <td>Brasília</td>
        <td><button id="button1" class="btn btn-success" type="button"><i class="fa fa-check-circle-o" onclick="SelectItem(1);"></i> Selecionar</button></td>
    </tr>
</tbody>

然后我有我要调用的javascript函数:

function SelectItem(nuEstabelecimento) {
    alert('Here' + nuEstabelecimento);
}

该行是从另一个追加行的脚本添加到表中的,如下所示:

$.each(dataJSON, function(idx, elem){

newTR =  ('<tr>');
newTR += ('<td>'+elem.NuEstabelecimento+'</td>');
newTR += ('<td>'+elem.NoEstabelecimento+'</td>');
newTR += ('<td>'+elem.NoTipoEstabelecimento+'</td>');
newTR += ('<td>'+elem.Endereco+'</td>');
newTR += ('<td>'+elem.CidadeUf+'</td>');
newTR += ('<td><button id="button'+elem.NuEstabelecimento+'" class="btn btn-success" type="button"><i class="fa fa-check-circle-o" onclick="SelectItem(1);"></i> Selecionar</button></td>');
newTR += ('</tr>');

$('#grdEstabelecimentosEncontrados tbody').append(newTR);

});

一切正常,但添加的 onclick 按钮不执行任何操作,控制台上也没有发生错误。

对此有任何帮助吗?谢谢!!!

【问题讨论】:

    标签: javascript bootstrap-modal


    【解决方案1】:

    使用事件委托而不是为每一行添加点击处理程序:

    $('#grdEstabelecimentosEncontrados').on('click', '.btn-success', function(e){ //this code will run for all current //and future elements with the class of .btn-success });

    【讨论】:

    • 谢谢布赖恩。这就像我想要的那样工作!即使我有很多具有不同按钮 id 的行,每个人都可以根据需要调用该函数!
    • Brian,现在的问题是每一行都有自己的值,我想通过点击按钮传递或获取它。在 onclick 事件中调用函数我可以像 onclick=SelectItem(param) 一样传递它,但是如果可能的话,我现在不使用你的解决方案!
    • 好的,布莱恩,我做到了。我不传递参数,但我可以得到这样的行的值,现在很好。 $(document).on("click", ".selecionarEstabelecimento", function(e){ var $tr = $(this).closest("tr"); var $td = $(this).closest("td"); alert($(this).val()); alert($td.prev().prev().prev().prev().text()); });
    猜你喜欢
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    相关资源
    最近更新 更多