开发者问题收集

在 .NET WebForms 中使用 jquery 触发简单的 onchange 方法

2016-12-02
366

我试图在用户尝试上传图像时触发一个简单的事件/图像预览,预览后(裁剪和编辑后,用户将单击“保存”)。到目前为止,我已经尝试过的操作如下:

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <script>
        $(document).ready(function () {
           function  loadImage(event) {
                var output = $('#<%=FileUpload1.ClientID%>').val();
                output.src = URL.createObjectURL(event.target.files[0]);
            };
        }); 
    </script>
</asp:Content>

在 HTML 端,我有如下文件上传控件:

<asp:FileUpload ID="FileUpload1" onchange="loadImage(this)" runat="server"  /></div>

但是当我尝试选择图像时,出现错误:

Uncaught ReferenceError: loadImage is not defined(…)

我做错了什么?

2个回答

删除 $.ready 调用,因为您只是定义该函数。

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <script>
           function  loadImage(event) {
                var output = $('#<%=FileUpload1.ClientID%>').val();
                output.src = URL.createObjectURL(event.target.files[0]);
            };
    </script>
</asp:Content>
leo.fcx
2016-12-02

您无法将从文件输入读取的值分配给图像。您必须先读取数据,如下所示

$(document).ready(function () {
       $('input[type="file"]').change(function(){
            readURL(this);
        });
        }); 
function readURL(input) {

    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('#output').attr('src', e.target.result);
        }

        reader.readAsDataURL(input.files[0]);
    }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file"/>
<img id="output" src=""/>
jafarbtech
2016-12-02