2

如果图像不是由用户上传,我有一个要求,我需要设置默认图像。我正在尝试使用 javascript 设置图像。我的图像位于 Eclipse 项目的图像文件夹中。

我的html代码是:

<tr>
    <td align="right">Upload Image :</td>
    <td>
         <input type="file"  id="imageNonSaml" name="imageNonSaml" value=""/>
    </td>
</tr>

我的 javascript 是:

function testSSO(){
    var image=document.getElementById("imageNonSaml").value;
    if(image==null || image==''){
        alert("inside if");
        document.getElementById('imageNonSaml').setAttribute('name',"/assets/img/generic.png");
    }
}
4

4 回答 4

2

您正在尝试更改name文件输入的属性。无法设置文件输入的路径。这样做的原因是安全性——如果可能的话,恶意站点可以设置该值并自动提交表单以从用户系统中窃取文件。

如果您打算设置srcof ,<img />那么您需要在getElementById()调用中引用它,并设置src属性,而不是name属性。

document.getElementById('myimg').src = "/assets/img/generic.png";
于 2013-07-02T14:07:44.737 回答
1

您不能使用 JavaScript 修改 FILE 类型的输入。如果站点可以自动从您的计算机上传文件,这将是一个主要的安全问题。

于 2013-07-02T14:08:56.990 回答
1

尝试这个。

function testSSO(){
 var image = document.getElementById("imageNonSaml");
 if(image.value == null || image.value == ''){
  alert("inside if");
  image.value = "/assets/img/generic.png";
 }
}
于 2013-07-02T14:09:36.747 回答
0

可以设置默认图像,但不能使用 JavaScript 使用 File 元素。基本上你有3个选择:

1.) 将其设置为数据库中的默认值。因此,如果不进行任何更改,则会在从数据库请求时加载默认图像。

2.) 以您的服务器端语言设置图像。因此,如果数据库中没有图像,则会显示默认图像。<img src="<% echo image %>" />

3.) 如果无法加载图像,则将 JavaScript 中的 Img 元素 src 属性设置为默认图像。

使用 jQuery,这将类似于以下内容:

$("#imageid").attr("src","mydomain.com/img/imgname.png");

或者没有 jQuery,请参阅 jay harris 的回答。

至于最佳选择,这取决于您的要求。如果有人禁用了 JavaScript(现在不太可能)但仍然可能发生,那么第 3 点可能会出现问题。我会根据我的项目的确切要求考虑 1 或 2。

编辑:

要在 JavaScript 中设置路径,我会使用完整的域,如下所示:

//get the url based upon what is in the browser
var url = location.protocol + "//" + location.host;
//build the image url from this
var imgurl = url + "/assets/img/generic.png";
//plug it into the jQuery selector
$("#imageid").attr("src",imgurl);
于 2013-07-02T14:18:04.237 回答