我正在上传一张图片,我必须在弹出窗口中显示该图片而不点击“打开”弹出式链接。如果用户上传了图像,则直接显示弹出的用户上传的图像。我想在没有点击的情况下点击该链接。你能帮帮我吗?
$.fn.expose = function(options) {
var $modal = $(this),
$trigger = $("a[href=" + this.selector + "]");
$modal.on("expose:open", function() {
$modal.addClass("is-visible");
$modal.trigger("expose:opened");
});
$modal.on("expose:close", function() {
$modal.removeClass("is-visible");
$modal.trigger("expose:closed");
});
$trigger.on("click", function(e) {
e.preventDefault();
$modal.trigger("expose:open");
});
$modal.add( $modal.find(".close") ).on("click", function(e) {
e.preventDefault();
// if it isn't the background or close button, bail
if( e.target !== this )
return;
$modal.trigger("expose:close");
});
return;
}
$("#Popup").expose();
// Example Cancel Button
$(".cancel").on("click", function(e) {
e.preventDefault();
$(this).trigger("expose:close");
});
.Modal {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: transparent;
visibility: hidden;
}
.Modal .content {
position: absolute;
left: 50%;
top: 30%;
width: 50%;
padding: 50px;
border-radius: 3px;
background: #fff;
transform: translate(-50%, -30%) scale(0);
}
.Modal .close {
position: absolute;
top: 8px;
right: 8px;
display: block;
width: 18px;
height: 18px;
padding: 5px;
line-height: 18px;
border-radius: 50%;
text-align: center;
cursor: pointer;
background: #2ecc71;
color: #fff;
}
.Modal .close:before { content: '\2715'; }
.Modal.is-visible {
visibility: visible;
background: rgba(0, 0, 0, 0.5);
-webkit-transition: background .35s;
-moz-transition: background .35s;
transition: background .35s;
-webkit-transition-delay: .1s;
-moz-transition-delay: .1s;
transition-delay: .1s;
}
.Modal.is-visible .content {
-webkit-transform: translate(-50%, -30%) scale(1);
-moz-transform: translate(-50%, -30%) scale(1);
transform: translate(-50%, -30%) scale(1);
-webkit-transform: transition: transform .35s;
-moz-transform: transition: transform .35s;
transition: transform .35s;
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="file" id="upload" value="Choose a file">
<a href="#Popup" class="button">Open Popup</a>
<!--popup content here-->
<div id="Popup" class="Modal">
<div class="content">
<h2>Image display here after uploading</h2>
<a href="#" class="cancel">Cancel</a> <span class="close"></div>
</div>
</div>
答案 0 :(得分:1)
在输入上使用.on(change)
功能来触发模态。
$("input[type='file']").on("change", function(event1) {
src1 = URL.createObjectURL(event1.target.files[0]);
$(".toshow").css('background-image','none');
$(".toshow").css('background-image','url(' + src1 + ')');
$(".Modal").trigger("expose:open");
});
这是一个工作片段。我在模态中添加了一个额外的div class="toshow"
和一些与之相关的css。您可以调整此div的高度以显示更大的图像。
$.fn.expose = function(options) {
var $modal = $(this),
$trigger = $("a[href=" + this.selector + "]");
$modal.on("expose:open", function() {
$modal.addClass("is-visible");
$modal.trigger("expose:opened");
});
$modal.on("expose:close", function() {
$modal.removeClass("is-visible");
$modal.trigger("expose:closed");
});
$trigger.on("click", function(e) {
e.preventDefault();
$modal.trigger("expose:open");
});
$modal.add( $modal.find(".close") ).on("click", function(e) {
e.preventDefault();
// if it isn't the background or close button, bail
if( e.target !== this )
return;
$modal.trigger("expose:close");
});
return;
}
$("#Popup").expose();
// Example Cancel Button
$(".cancel").on("click", function(e) {
e.preventDefault();
$(this).trigger("expose:close");
});
$("input[type='file']").on("change", function(event1) {
src1 = URL.createObjectURL(event1.target.files[0]);
$(".toshow").css('background-image','none');
$(".toshow").css('background-image','url(' + src1 + ')');
$(".Modal").trigger("expose:open");
});
&#13;
.Modal {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: transparent;
visibility: hidden;
}
.Modal .content {
position: absolute;
left: 50%;
top: 30%;
width: 50%;
padding: 50px;
border-radius: 3px;
transform: translate(-50%, -30%) scale(0);
}
.content .toshow{
background-repeat:no-repeat;
width:100%;
height:100px;
background-position:center;
background-size:contain;
}
.Modal .close {
position: absolute;
top: 8px;
right: 8px;
display: block;
width: 18px;
height: 18px;
padding: 5px;
line-height: 18px;
border-radius: 50%;
text-align: center;
cursor: pointer;
background: #2ecc71;
color: #fff;
}
.Modal .close:before { content: '\2715'; }
.Modal.is-visible {
visibility: visible;
background: rgba(0, 0, 0, 0.5);
-webkit-transition: background .35s;
-moz-transition: background .35s;
transition: background .35s;
-webkit-transition-delay: .1s;
-moz-transition-delay: .1s;
transition-delay: .1s;
}
.Modal.is-visible .content {
-webkit-transform: translate(-50%, -30%) scale(1);
-moz-transform: translate(-50%, -30%) scale(1);
transform: translate(-50%, -30%) scale(1);
-webkit-transform: transition: transform .35s;
-moz-transform: transition: transform .35s;
transition: transform .35s;
}
&#13;
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="file" id="upload" value="Choose a file">
<a href="#Popup" class="button">Open Popup</a>
<!--popup content here-->
<div id="Popup" class="Modal">
<div class="content">
<div class="toshow"></div>
<a href="#" class="cancel">Cancel</a> <span class="close"></span></div>
</div>
&#13;
答案 1 :(得分:0)
假设您将使用Ajax
上传图片。这个hack会按照你的预期进行。
使用callback
在modal
中触发img
并上传modal options
来源。其他评论将解释
$('#upload').change(function(){ //image change listener
var files = $(this).get(0).files;
var img = window.URL.createObjectURL(files[0]); //first file
$("#Popup").expose({src: img}, function(modal){
//your image uploading here
setTimeout(function(){ //mocking upload here
console.log("came to click");
modal.trigger("expose:open");//keep this in after your Ajax Upload Success
}, 2000);
});
});
$.fn.expose = function(options, callback) {
var $modal = $(this),
$trigger = $("a[href=" + this.selector + "]");
callback($modal);
$("#uploaded-image").attr('src', options.src); //setting img src
$modal.on("expose:open", function() {
$modal.addClass("is-visible");
$modal.trigger("expose:opened");
});
$modal.on("expose:close", function() {
$modal.removeClass("is-visible");
$modal.trigger("expose:closed");
});
$trigger.on("click", function(e) {
e.preventDefault();
$modal.trigger("expose:open");
});
$modal.add( $modal.find(".close") ).on("click", function(e) {
e.preventDefault();
// if it isn't the background or close button, bail
if( e.target !== this )
return;
$modal.trigger("expose:close");
});
return;
}
// Example Cancel Button
$(".cancel").on("click", function(e) {
e.preventDefault();
$(this).trigger("expose:close");
});
&#13;
.Modal {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: transparent;
visibility: hidden;
}
.Modal .content {
position: absolute;
left: 50%;
top: 30%;
width: 50%;
padding: 50px;
border-radius: 3px;
background: #fff;
transform: translate(-50%, -30%) scale(0);
}
.Modal .close {
position: absolute;
top: 8px;
right: 8px;
display: block;
width: 18px;
height: 18px;
padding: 5px;
line-height: 18px;
border-radius: 50%;
text-align: center;
cursor: pointer;
background: #2ecc71;
color: #fff;
}
.Modal .close:before { content: '\2715'; }
.Modal.is-visible {
visibility: visible;
background: rgba(0, 0, 0, 0.5);
-webkit-transition: background .35s;
-moz-transition: background .35s;
transition: background .35s;
-webkit-transition-delay: .1s;
-moz-transition-delay: .1s;
transition-delay: .1s;
}
.Modal.is-visible .content {
-webkit-transform: translate(-50%, -30%) scale(1);
-moz-transform: translate(-50%, -30%) scale(1);
transform: translate(-50%, -30%) scale(1);
-webkit-transform: transition: transform .35s;
-moz-transform: transition: transform .35s;
transition: transform .35s;
}
&#13;
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="file" id="upload" value="Choose a file">
<a href="#Popup" class="button">Open Popup</a>
<!--popup content here-->
<div id="Popup" class="Modal">
<div class="content">
<h2>Image display here after uploading</h2>
<img id="uploaded-image"/>
<a href="#" class="cancel">Cancel</a> <span class="close"></div>
</div>
</div>
&#13;