HTML是:
<div class="form-item" id="edit-image-upload-wrapper"><img id="img_prev" src="#">
<label for="edit-image-upload">Upload Your Picture: <span class="form-required" title="This field is required.">*</span></label>
<input type="file" name="files[image_upload]" class="form-file required" id="edit-image-upload" size="60"></input>
<div class="description"><p>You need to provide a passport sized image in jpg/jpeg or png format. The image size has to be 100kb or lower.</p>
</div>
</div>
JS代码:
$('#edit-image-upload-wrapper input').prepend('onchange="readURL(this);"');
由于此JS代码输入标记已更改如下:
<input type="file" name="files[image_upload]" class="form-file required" id="edit-image-upload" size="60">onchange="readURL(this);"</input>
我想改变如下:
<input type="file" name="files[image_upload]" class="form-file required" id="edit-image-upload" size="60" onchange="readURL(this);"></input>
我该怎么做?
答案 0 :(得分:2)
通常,要向元素添加(或更新)属性,您可以使用attr
:
$('#edit-image-upload-wrapper input').attr('onchange', 'readURL(this);');
由于该属性反映为属性,prop
也可以起作用:
$('#edit-image-upload-wrapper input').prop('onchange', 'readURL(this);');
然而,因为你正在使用jQuery,我看不出有任何理由这样做而不是使用正确的event hookup,例如:
$('#edit-image-upload-wrapper input').on('change', function() {
readURL(this);
});
如果您可以更改readURL
函数以使其从this
而不是从其第一个参数获取URL,则可以更简单:
// Requires small change to `readURL`
$('#edit-image-upload-wrapper input').on('change', readURL);
附注1:您的input
有自己的id
值(edit-image-upload
),因此这些选择器可能只是#edit-image-upload
,而不是#edit-image-upload-wrapper input
。
附注2:您的HTML无效。 input
个元素是"void" elements,它们从不拥有内容,因此您永远不会为它们编写结束标记。例如,你永远不会写</input>
。 不能包含内容(input
,br
,hr
和其他一些内容)的任何元素都不会使用结束标记进行编写。
答案 1 :(得分:0)
使用此:
$('#edit-image-upload-wrapper input').change(function() {
//.....
});