【问题标题】:Event fires twice with Jasny Bootstrap使用 Jasny Bootstrap 触发两次事件
【发布时间】:2014-03-12 10:36:14
【问题描述】:

以下 HTML 使用 Jasny Bootstrap mod fileinput.js

<div class="profile_image">
            <form accept-charset="UTF-8" action="/users/5/update_image" class="edit_user" data-remote="true" enctype="multipart/form-data" id="edit_user_5" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"><input name="authenticity_token" type="hidden" value="xx6ELZRrTR6XDzmujIPBsCkr8zbK19I/7CprOOTiblM="></div>
                <div class="fileinput fileinput-new" data-provides="fileinput">
                    <div class="fileinput-preview thumbnail" data-trigger="fileinput" style="width: 200px; position: relative;">
                        <img alt="7bbfd77c 1102 4831 9ba8 246fb67460b3.2014 01 17" class="img-responsive" src="http://myweb.com/image.jpg">
                        <div class="choose_new">
                        </div>
                    </div>
                    <div class="btn-file">
                            <input id="user_avatar" name="user[avatar]" type="file">

                    </div>
                </div>
                    <input name="commit" type="submit" value="Submit">
            </form>

        </div>

我想监听 change.bs.fileinput 事件,以便在选择图像后自动提交表单

使用

$(".fileinput").on("change.bs.fileinput", function(e) {
    e.stopPropagation(); 
    alert();
    return false;
});

这样做会产生 2 个警报

我该如何解决这个问题?

【问题讨论】:

  • 你试过 $('form.edit_user').submit(); 吗?
  • 我遇到了同样的问题。您是否设法找出导致它的原因?
  • 请注意,这只发生在将 bootstrap-spinner.js 文件添加到页面后()
  • 我认为这个问题在 fileinput.js 升级后自行解决。我目前正在使用 v 3.1.3
  • 啊哈尼科!经过几个小时的挖掘......我得出了同样的结论。我会相应地回答这个问题以供将来参考。

标签: javascript jquery html forms twitter-bootstrap


【解决方案1】:

我相信这个问题与文件输入的版本有关。这是一个 jsfiddle 展示该问题,使用文件输入版本 3.0.0-p7(代码如下)

如果我们将 fiddle 更新到版本 3.1.3 (http://cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.1.3/js/jasny-bootstrap.min.js),那么问题就不会出现。

JSFIDDLE SHOWCASE(使用 JQuery 1.11.0 和为 fileinput-3.0.0-p7 添加的资源):

jQuery(document).ready(function() {
    $('#file-upload').on('change.bs.fileinput', function(event) {
        event.stopPropagation();
        alert("yy");
        console.log(event);
    });
});

<div id="file-upload">
    <div class="fileinput fileinput-new" data-provides="fileinput">
        <span class="btn default btn-file"> <span class="fileinput-new"> SELECT </span> <span class="fileinput-exists"> CHANGE</span> <input id="uploadID"
            type="file" name="upload"> <input type="hidden" id="answerId" value="85009">
        </span> <span class="fileinput-filename"> </span> &nbsp; <a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none"> </a>
    </div>
</div>

【讨论】:

【解决方案2】:

您可以使用“提交”事件提交表单,而不是触发“点击”。

$(".fileinput").on("change.bs.fileinput", function(){
       $("#edit_user_5").submit();
       return false;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-07
    • 2017-01-18
    • 2013-03-28
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多