bootstrap popover:使用一个popover将值放入多个文本框中

时间:2014-01-27 21:41:10

标签: jquery twitter-bootstrap popover

我遇到了一个奇怪的bootstrap popover问题。在我的页面中,我有2个带有按钮的文本框,可打开一个弹出框。 Popover有一个输入框,当数据输入到popover中的文本框中时,需要将值发送回打开popover的父文本框。

在此之前一切正常,但是当我点击提交我在弹出框中输入的值时,相同的值会添加到页面中的两个文本框中。以下是代码:

<script type="text/javascript" language="javascript">
    $(document).ready(function () {
        $('.showPopover').popover({
            html: true,
            placement: "bottom",
            title: function () {
                return $("#popover-head").html();
            },
            content: function () {
                return $("#popover-content").html();
            }
        });
        $('.showPopover').click(function () {
            var cTextBox = '#' + $(this).prev().attr("id");
            $('#hdnCalculatefteFor').val(cTextBox);
        });

        $(document).on("click", ".close", function () {
            $(".showPopover").popover('hide');
        });

        $(document).on("click", ".getData", function () {
            var ctl = $('#hdnCalculatefteFor').val();
            var ctlInput = $('#input1').val();
            $(ctl).val(ctlInput);
        });
    });
</script>
<div class="row">
    <div class="col-md-2">
        <div id="div1" class="form-group">
            <label class="required">Text Box 1</label>
            <div class="input-group">
                <asp:TextBox ID="txt1" runat="server" class="form-control" ClientIDMode="Static"></asp:TextBox>
                <span id="s1" style="cursor:pointer;" class="form-control showPopover" >
                        <i class="icon-list"></i>
                </span>
            </div>
        </div>
    </div>
    <div class="col-md-2">
        <div id="div2" class="form-group">
            <label class="required">Text Box 2</label>
            <div class="input-group">
                <asp:TextBox ID="txt2" runat="server" class="form-control" ClientIDMode="Static"></asp:TextBox>
                <span id="s2" style="cursor:pointer;" class="form-control showPopover">
                    <i class="icon-list"></i>
                </span>
            </div>
        </div>
    </div>
</div>
<asp:HiddenField ID="hdnCalculatefteFor" ClientIDMode="Static" runat="server" />
<div id="popover-head" class="hide" >
    Test
    <button type="button" class="close" data-dismiss="popover" aria-hidden="true">×</button>
</div>
<div id="popover-content" class="hide">
    <input type="text" id="input1" />                
    <button type="button" id="btn" class="getData" value="Get"></button>    
</div>

有关如何解决此问题的任何建议?

谢谢, 纳文

1 个答案:

答案 0 :(得分:0)

执行此操作时:

$('.showPopover').popover({...

您正在使用类showPopover为每个元素创建一个弹限窗口。哪个可能没问题,但是因为你正在重新生成内容,特别是输入元素,你会得到它们的重复。因此,如果您运行代码并查看生成的源代码,您会看到2 x input带有id="input1"。因此,您会遇到交叉污染目的地的问题。

修复方法是为每个弹出框提供单独的内容,或者让按钮的onclick事件获取最近输入的值以查找要填充的数据。

例如:

var ctlInput = $(this).siblings("#input1").val();

这是一个代码库,展示了:http://codepen.io/simoncowie/pen/lyGoK