JS 更改表单的提交时间和Input file的样式
JS转换时间
function renderTime(data) {
var da = eval('new ' + data.replace('/', '', 'g').replace('/', '', 'g'));
return da.getFullYear() + "/" + da.getMonth() + "/" + da.getDay() + "/" + da.getHours() + ":" + da.getSeconds() + ":" + da.getMinutes();
}
JS转换Input file为图片路径
function getObjectURL(file) {
var url = null;
if (window.createObjectURL != undefined) { // basic
url = window.createObjectURL(file);
} else if (window.URL != undefined) { // mozilla(firefox)
url = window.URL.createObjectURL(file);
} else if (window.webkitURL != undefined) { // webkit or chrome
url = window.webkitURL.createObjectURL(file);
}
Savefiles[url] = file;
return url;
}
Js控制表单的上传时效
function SubmitFrom()
{
var Backinfo = new Array();
var m = ;
for( var n in Savefiles)
{
if (Savefiles[n] != null)
{
m++;
var formData = new FormData();
formData.append('file', Savefiles[n]);
var oReq = new XMLHttpRequest();
oReq.open("POST", "/WorkOrder/ImageUpload", false);
oReq.onload = function (oEvent) {
if (oReq.readyState == ) {
if (oReq.status == || oReq.status == ) {
var result = oReq.responseText;
if(result=="OK")
{
Backinfo[m] = "OK";
$("#ImageDiv").text("第"+m+"张图片已上传");
} }
}
};
oReq.send(formData);
}
if(Backinfo[m]=="OK")
{
Savefiles[n] == null;
}
}
for (var i = ; i < Backinfo.length; i++)
{ if (Backinfo[i]!="OK" )
{
if(confirm("第"+i+"张图片添加失败是否继续上传"))
{
$('#ImgForm').submit();
}
else
{
return;
}
}
}
var file = $("#imgFlie");
file.after(file.clone().val(""));
file.remove();
$('#ImgForm').submit();
$('#button').attr("disabled", "disabled");
$('#button').attr("value", "已提交修改");
$('#button').css("color","red");
}
JS 转换Input file 为图片路径(通过fileRead)
function showPicture(files) {
for (var i = 0; i < files.length; i++) {
var file = files[i];
if (!/image\/\w+/.test(file.type)) {
return false;
}
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function (e) {
var img = new Image();
img.src = this.result;
img.onload = function () {
var size = img.width + 'x' + img.height;
$("#ImageDiv").append('<div>' +
'<a href=' +
'"' + img.src + '"' +
'data-size=' +
'"' + size + '"' +
'>' +
'<img class="WorkOrderimageNew" style="height:40px;width:40px;" src=' +
'"' + img.src + '"' +
'>' +
'</a>' +
'</div>'
)
}
}
}
}
JQ注册input change事件(因JQ版本不同注册的关键字不同)
$("#imgFlie").live("change", function () {
var data = this.files;
$(this).clone().replaceAll(file = this); //每次选中都保存旧元素,并使用新的控件替换
$.each(data, function (key, value) {
var objUrl = getObjectURL(value);
if (objUrl) {
var img = new Image();
img.src = objUrl;
img.onload = function () {
var size = img.width + 'x' + img.height;
$("#ImageDiv").append('<figure><div>' +
'<a href=' +
'"' + objUrl + '"' +
'data-size=' +
'"' + size + '"' +
'>' +
'<img class="WorkOrderimageNew" style="height:40px;width:40px;" src=' +
'"' + img.src + '"' +
'>' +
'</a>' +
'</div>' +
' </figure>'
)
};
}
});
});
JS循环遍历删除动态生成的节点(只做参考)
function deleteNode(imagePath)
{
var Div=document.getElementById("ImageDiv");
var figures = Div.childNodes;
var cycle = false;
var n = undefined;
for (var f = figures.length - 1; f >= 0; f--) {
if (cycle == true&&n!=undefined)
{
Div.removeChild(figures[n])
deleteArray(imagePath);
break;
}
if (figures[f].nodeName == "FIGURE") {
Divs = figures[f].childNodes;
for (var d = Divs.length - 1; d >= 0; d--) {
if (Divs[d].nodeName == "DIV") {
aNodes = Divs[d].childNodes;
for (var a = aNodes.length - 1; a >= 0; a--) {
console.log("A:" + aNodes[a].nodeName);
if (aNodes[a].nodeName == "A") {
imgNodes = aNodes[a].childNodes[0];
if (imgNodes.src == imagePath) {
cycle = true;
n = f;
break;
}
}
} }
}
}
}
}
总结:
1,表单中input file 提交的文件在部分浏览器中可以获取文件名称进而可以判断是否重复选择同一文件,而手机端获取到的是虚拟的就算是选择相同的文件也会生成不同的虚拟文件所以不能判断所选文件是否重复,类似于发说说上传图片一样同一张图片可以一次上传多个,转换文件为图片Url通过FileReader和createObjectURL,
2,对于重复选择input file 不能触发change的事件解决办法参考:http://www.cnblogs.com/axl234/p/3897399.html
3,对于选择的图片让其显示可以给input注册change事件 JS <input type="file" name="fileData" id="imgFlie" onchange="showPicture()" multiple />
Jq $("#imgFlie").live("change", function () { var files=this.files}
JS 更改表单的提交时间和Input file的样式的更多相关文章
- DEDE自定义表单显示提交时间|添加提交时间,获取ip的方法
前提是后台自定义表单字段一定要有 “时间”,这里的acca_time <div class="tit">*咨询内容:</div> <div clas ...
- 使用js控制表单重复提交(1加锁,2事件方式,3 EasyUI中解决表单重复提交)
方法一. var flag = true; $(function() { $("#interested").click(function() { beInterested(); } ...
- 使用JS对form的内容验证失败后阻止提交 &&js校验表单后提交表单的三种方法总结
1.form的两个事件 submit,提交表单,如果直接调用该函数,则直接提交表单 onSubmit,提交按钮点击时先触发,然后触发submit事件.如果不加控制的话,默认返回true,因此表单总能提 ...
- js防止表单重复提交的两种方法
第一种:用flag标识,下面的代码设置checkSubmitFlg标志: 复制代码代码如下: <script language=""javascript"" ...
- js学习之道:js防止表单重复提交
第一种:用flag标识,下面的代码设置checkSubmitFlg标志: <script language="”javascript”"> var checkSubmi ...
- jquery.form.js+jquery.validation.js实现表单校验和提交
一.jquery引用 主要用到3个js: jquery.js jquery.form.js jquery.validation.js 另外,为了校验结果提示本地化,还需要引入jquery.vali ...
- js防止表单重复提交
1.表单 <form id="addForm" onsubmit="getElementById('submitInput').disabled=true;retu ...
- JS 防止表单重复提交的方法
第一种:用flag标识,下面的代码设置checkSubmitFlg标志: <script language="”JavaScript”"> var checkSubmi ...
- JS/Jquery 表单方式提交总结
1. submit提交 (1). submit 按钮式提交 缺点:在提交前不可修改提交的form表单数据 // 1. html <form method="post" act ...
随机推荐
- 【类克鲁斯卡尔做法+枚举最小边】【HDU1598】【find the most comfortable road】
题意: 给你一个图,有边权,K个询问:u到v 的路径中 边权最大值-边权最小值的最小值是多少 http://acm.hdu.edu.cn/showproblem.php?pid=1598 题解( ...
- 绿色mysql启动脚本
启动脚本如下:./mysqld_safe --defaults-file=/export/servers/mysql-5.5.38/my.cnf --ledir=/export/servers/mys ...
- WPF做的迁移文件小工具
客户这边需要往服务器上传PDF文件.然后PDF文件很多,需要挑出来的PDF文件也不少.因此做了个小工具. 功能很简单,选定源文件夹,选定记录着要提取的文件的excel 文件.OK ,界面如下. XAM ...
- ASP.NET中的路径(path) 详解
一 ASP.NET常用路径(path)获取方法与格式对照表 假设我们的网址为http://localhost:1897/ News/Press/Content.aspx?id=1019 跟 Brows ...
- BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster( 后缀数组 + 二分 + RMQ + 树状数组 )
全部串起来做SA, 在按字典序排序的后缀中, 包含每个询问串必定是1段连续的区间, 对每个询问串s二分+RMQ求出包含s的区间. 然后就是求区间的不同的数的个数(经典问题), sort queries ...
- Django模板-分离的模板
上一篇Django模板-在视图中使用模板最后的问题,我们需要把数据和展现分离开. 你可能首先考虑把模板保存在文件系统的某个位置并用 Python 内建的文件操作函数来读取文件内容. 假设文件保存在 E ...
- Node.js包管理器:
Node.js包管理器: 当我们要把某个包作为工程运行的一部分时,通过本地模式获取,如果要在命令行下使用,则使用全局模式安装 使用全局模式安装的包并不能直接在JavaScript文件中用require ...
- ConnectivityManager与检查网络连接的使用
1.ConnectivityManager的作用 ConnectivityManager主要管理和网络管理相关的操作 TelephonyManager则管理和手机.运营商等的相关信息 WifiMana ...
- yacc和lex在ubuntu上安装
在编译boa webserver源码的时候./configure的过程中遇到找不到yacc的提示. 采用以下失败: sudo apt-get install yacc lex 应替换为: sudo ...
- SQL Server 的 3 种连接
第一种 1. nested loop: select * from tableA inner join tableB on tableA.X = tableB.X; 它的执行过程是这样的.对于tabl ...