【问题标题】:facebook style jquery tokeninput script retains value in the jquery-ui modal windowfacebook 样式 jquery tokeninput 脚本在 jquery-ui 模态窗口中保留值
【发布时间】:2012-02-04 13:19:37
【问题描述】:

尝试使用 facebook 风格的 tokeninput 脚本,我将使用与 FB 相同的方式(使用 jquery-ui 获取模式窗口)向社交网络系统中的朋友发送消息。

点击“打开对话框”按钮(“opener” id 使模态窗口出现)

javascript sn-p:

    <script type="text/javascript">
    $(document).ready(function() {
        $("input[type=button]").click(function () {
            alert("Would submit: " + $(this).siblings("input[type=text]").val());
        });
    });

</script>

    <script type="text/javascript">

    $(document).ready(function() {



             $(".show_dialog script").remove();
         $dialog = $('.show_dialog');


         $dialog.dialog({
                width:500,
                height:300,
                autoOpen: false,
                title: 'Basic Dialog'
            });

        $('#opener').click(function() {
            $dialog.dialog('open');

            $(this).siblings("input[type=text]").val('this is a value ')// ADDED BY ME 


            //$("#demo-input-facebook-theme", $dialog).val('');





            $(".border_text", $dialog).css("border","1px solid red");
            // prevent the default action, e.g., following a link
            return false;
        });
    });
    </script>

html sn-p 是:

<button id="opener">Open the dialog</button>


<div class="show_dialog" style="display:block ;">


               <label class="send_meg_recipient_txt">To:</label>







<h2 id="theme">Facebook Theme</h2>
    <div>
        <input type="text" id="demo-input-facebook-theme" name="blah2" " /><br></br>
        <input type="button" value="Submit" />


        <script type="text/javascript">
        var script = jQuery('<script/>').attr('src', 'js/jquery.tokeninput.js').appendTo('head');

        $(document).ready(function() {


        var script = jQuery('<script/>').attr('src', 'js/jquery.tokeninput.js').appendTo('head');


        var q_string=$("#demo-input-facebook-theme").val();





            $("#demo-input-facebook-theme",$dialog).tokenInput("token_find/my3.php?q=q_string", {

                preventDuplicates: true,
                theme:"facebook"

            });


        /*
        */  

        });


        </script>


    </div>


 </div><!--end of class  show_dialog-->

我可以从脚本中获取标记。 但是,如果我点击“opener”id 进行一次标记后,模态窗口就会出现,其先前的标记保留在适当的位置,这显然是我不想要的。

如何摆脱它?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您似乎加载了两次 jquery.tokeninput.js 文件 - 只要它位于 jQuery 之后,您就不需要在 $(document).ready(...) 中使用它。

    一旦你展示了你的模态(称为$dialog.dialog('open');)尝试,调用:

    $('#demo-input-facebook-theme').tokenInput("clear");

    这应该清除所有以前的令牌,然后您可以在之后添加任何您想要的默认令牌。

    【讨论】:

    • 是的,做到了。令牌清除。但是现在的问题是在我关闭对话框后,提示文本(即输入搜索词出现在平面网页上,而不是在模式窗口上)如果我在平面网页上单击该文本,然后启动再次出现模态窗口,模态窗口上不会出现提示文本,并且在输入框中键入任何文本都不会出现。我应该把它作为一个不同的问题发布到 SOF 中吗?
    • 根据您使用的模态插件,您可能需要检查是否已经为该选择器初始化了令牌输入。有时模态会克隆 dom 元素并在关闭而不是跟踪状态时处理它们。因此,当模态显示时,目标可能正在被释放和重新克隆。
    • 我使用 'autoOpen: false' 作为模态窗口。当我第一次启动模态窗口时,tokeninput 插件显然应用在同一个选择器上。 1)如果插件是预先初始化的,它会不会通过相同的功能,它必须在第一次? 2)如何判断是否初始化为b4? 3)在任何情况下,我应该更改哪个代码?
    • 1) 理论上是的,除了大多数灯箱克隆 DOM 元素,因此您拥有的任何 jQuery 插件都可能针对灯箱关闭时释放的那些元素 - 您需要在每个灯箱上重新初始化插件加载。 2)这因每个插件而异 - tokeninput 具有良好的 API 文档。 3)我建议在每次加载灯箱时初始化针对相同选择器的插件。
    • 试图理解。 selector.pluginname() - 这是初始化吗?你能对重新初始化有更多的了解吗?
    猜你喜欢
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多