可以使用jQuery插件和Drupal的Ajax API来实现Ajax检测上传的图片是否太大。
(function($){
Drupal.behaviors.uploadSize = {
attach : function(context) {
var file = $('.field-widget-file .filefield-element input', context);
if (file.length > 0) {
file.once(function () {
$(this).change(function () {
var $this = $(this);
var files = $this.get(0).files;
if (files.length > 0) {
var file = files[0];
if (file.size > 1024*1024) {
alert('图片太大,请选择小于1MB的图片!');
$this.replaceWith($this.clone());
}
}
});
});
}
}
};
})(jQuery);
这段代码会监听上传图片表单的变化,当有图片上传时会检测图片大小,如果超过1MB则会提示用户选择小于1MB的图片。
function mymodule_form_alter(&$form, &$form_state, $form_id){
if ($form_id == 'your_form_id') { // 替换成你的表单ID
$form['#attached']['js'] = array(
array(
'data' => drupal_get_path('module', 'mymodule') . '/js/upload_size.js',
'type' => 'file',
),
);
}
}
这段代码会将刚才添加的JavaScript文件(upload_size.js)添加到你的表单中。
(function ($) {
Drupal.ajax.prototype.commands.showAlert= function (ajax, response, status) {
if (response.show_alert) {
alert(response.message);
}
};
}(jQuery));
(function ($) {
Drupal.behaviors.uploadSize = {
attach : function(context) {
var file = $('.field-widget-file .file