使用jQuery显示图像

时间:2015-11-27 06:46:37

标签: javascript jquery angularjs

当我选择图像时,有时它不会显示,但是当我再次点击时,会显示图像。

的jQuery

$('#morefiles').change(function (event) {
  if (!(/\.(gif|jpg|jpeg|tiff|png)$/i).test($(this).val())) {
    $ionicPopup.alert({
      title: 'Message',
      template: 'You must select an image file only !'
    });
    $('#morefiles').val('');
  } else {
    var obj = {};
    obj.key = event.target.files[0];
    obj.value = URL.createObjectURL(event.target.files[0]);
    $scope.items.push(obj);
    console.log(JSON.stringify(obj));
    $('#morefiles').val(obj);
  }
});

HTML

<input type="file" multiple="" id="morefiles" accept="image/*" >

如何解决这个问题?当用户选择图像时,我需要在那时显示图像。提前谢谢。

2 个答案:

答案 0 :(得分:1)

好。我找到了你..添加这一行:

$scope.$apply();

到您的代码如下:

$('#morefiles').change(function (event) {
                if (!(/\.(gif|jpg|jpeg|tiff|png)$/i).test($(this).val())) {
                    $ionicPopup.alert({
                        title: 'Message',
                        template: 'You must select an image file only !'
                    });
                    $('#morefiles').val('');
                } else {
                    var obj = {};
                    obj.key = event.target.files[0];
                    obj.value = URL.createObjectURL(event.target.files[0]);
                    $scope.items.push(obj);
                    $scope.$apply()
                    console.log(JSON.stringify(obj));

                    $('#morefiles').val(obj);
                }
            });

我也遇到了这个问题。但是这样解决了。我不知道为什么我需要做$scope.$apply();。我没有足够的时间去挖掘这些东西。如果有人知道它的原因,欢迎你评论我的答案。

答案 1 :(得分:0)

试试这个:

&#13;
&#13;
$(function() {
  $('#morefiles').on('change', gotPic);
});

function gotPic(event) {
  if (event.target.files.length) {
    for (var i = 0; i < event.target.files.length; i++) {
      if (event.target.files[i].type.indexOf('image/') == 0) {
        var src = URL.createObjectURL(event.target.files[i])
        $('#preview').append('<img src = ' + src + '><br>');
      }
    }
  }
}
&#13;
img {
  width: 300px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" multiple="" accept="image/*;capture=camera" id="morefiles">
<br>
<div id="preview"></div>
&#13;
&#13;
&#13;