<script type="text/javascript">
function MultiSelector(list_target, max)
{
// Where to write the list
this.list_target = list_target;
// How many elements?
this.count = 0;
// How many elements?
this.id = 0;
// Is there a maximum?
if (max){this.max = max;}else{this.max = -1;}
/**
* Add a new file input element
*/
this.addElement = function(element)
{
// Make sure it's a file input element
if (element.tagName == 'INPUT' && element.type == 'file')
{
// Element name -- what number am I?
element.name = 'file_' + this.id++;
// Add reference to this object
element.multi_selector = this;
// What to do when a file is selected
element.onchange = function()
{
var inputs = document.getElementsByTagName("input");
var count = 0;
for(var i=0;i<inputs.length;i++)
{
if (inputs[i].type == 'file')
{
if(this.value==inputs[i].value)
{
count++;
}
}
}
if(count>1)
{
alert("该文件已存在!");
//this.outerHTML=this.outerHTML;
return false;
}
if(!this.value.IsPicture())
{
alert("只能上传图片!");
//this.outerHTML=this.outerHTML;
return false;
}
// New file input
var new_element = document.createElement('input');
new_element.type = 'file';
new_element.size = 1;
new_element.className = "addfile";
// Add new element
this.parentNode.insertBefore(new_element, this);
// Apply 'update' to element
this.multi_selector.addElement(new_element);
// Update list
this.multi_selector.addListRow(this);
// Hide this: we can't use display:none because Safari doesn't like it
this.style.position = 'absolute';
this.style.left = '-1000px';
}
// If we've reached maximum number, disable input element
if (this.max != -1 && this.count >= this.max)
{
element.disabled = true;
}
// File element counter
this.count++;
// Most recent element
this.current_element = element;
}
else
{
// This can only be applied to file input elements!
alert('Error: not a file input element');
}
}
/**
* Add a new row to the list of files
*/
this.addListRow = function(element)
{
// Row div
var new_row = document.createElement('div');
new_row.className="divName";
// Delete button
var new_row_button = document.createElement('input');
new_row_button.type = 'button';
new_row_button.value = '删除';
// References
new_row.element = element;
// Delete function
new_row_button.onclick = function()
{
// Remove element from form
this.parentNode.element.parentNode.removeChild(this.parentNode.element);
// Remove this row from the list
this.parentNode.parentNode.removeChild(this.parentNode);
// Decrement counter
this.parentNode.element.multi_selector.count--;
// Re-enable input element (if it's disabled)
this.parentNode.element.multi_selector.current_element.disabled = false;
// Appease Safari
// without it Safari wants to reload the browser window
// which nixes your already queued uploads
return false;
}
// Set row value
var filename = element.value.substring(element.value.lastIndexOf("\\")+1);
new_row.innerHTML = filename;
// Add button
new_row.appendChild(new_row_button);
// Add it to the list
this.list_target.appendChild(new_row);
}
}
String.prototype.IsPicture = function()
{
//判断是否是图片 - strFilter必须是小写列举
var strFilter=".jpeg|.gif|.jpg|.png|.bmp|.pic|"
if(this.indexOf(".")>-1)
{
var p = this.lastIndexOf(".");
var strPostfix=this.substring(p,this.length) + '|';
strPostfix = strPostfix.toLowerCase();
if(strFilter.indexOf(strPostfix)>-1)
{
return true;
}
}
return false;
}
</script>