Javascript jQuery.on(';change';,function(){}未在asp.net文件上载控件上触发
我在我的aspx页面上有一个Fileupload控件和一个img标记,在这里我可以上传图像并显示在img标记中Javascript jQuery.on(';change';,function(){}未在asp.net文件上载控件上触发,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我在我的aspx页面上有一个Fileupload控件和一个img标记,在这里我可以上传图像并显示在img标记中 <asp:FileUpload ID="f_UploadImage" runat="server" /> <br /> <img id="myUploadedImg" alt="Photo" style="width: 180px;" /> 直接绑定事件,它应该可以工作:- $("#btn_upload").on('click', func
<asp:FileUpload ID="f_UploadImage" runat="server" />
<br />
<img id="myUploadedImg" alt="Photo" style="width: 180px;" />
直接绑定事件,它应该可以工作:-
$("#btn_upload").on('click', function () {
$('#f_UploadImage').trigger('click');
});
$("#f_UploadImage").on('change', 'input', function () {
var file, img;
if ((file = this.files[0])) {
img = new Image();
img.onload = function () {
sendFile(file);
};
img.onerror = function () {
alert("Not a valid file:" + file.type);
};
img.src = _URL.createObjectURL(file);
}
});
我已经验证了这一点,对我来说效果很好
我的代码:
$("#f_UploadImage").change(function () {
更新:
根据您的输入,您的代码在表单
标记中不起作用,因为默认情况下按钮
控件的类型为提交
,因此在您的情况下,它正在将表单发回服务器,或者在其他情况下,正在发生回发,而您的客户端代码不起作用。因此,要防止在现有代码中出现这种情况,您可以使用sepreventDefault
如下所示:-
$(document).ready(function () {
$("input#fuTest").change(function () {
alert(1);
});
$("#btnTest").click(function () {
$("#fuTest").trigger("click");
});
});
\或\
您可以将按钮类型设置为button,这样它就不会将表单发布到服务器:-
$("#btnUpload").click(function (e) {
e.preventDefault();
$("#fuImage").trigger("click");
});
上传图像
现在我把html标签放在标签外面,这样它就工作得很完美了。你能告诉我为什么它在表单标签外面工作吗?如果我在服务器端上传文件,我需要表单标签里面的所有控件。不,我还没有创建任何母版页。我正在使用单个aspx页面。这是我的快照,希望这能描述我的问题详细@匿名-嘿,检查我的更新,如果有任何问题,请告诉我。
$(document).ready(function () {
$("input#fuTest").change(function () {
alert(1);
});
$("#btnTest").click(function () {
$("#fuTest").trigger("click");
});
});
$("#btnUpload").click(function (e) {
e.preventDefault();
$("#fuImage").trigger("click");
});
<button type="button" id="btnUpload">Upload Image</button>