动态添加file,和清空file的value的问题
首先 :
我是动态添加(记住table(tbale已经写好)里面一行是有是三列)。用户点“添加”,就可以添加一个file标签。代码如下
function addFile() {
//创建行
var $tr = $("<tr></tr>");
$("#tb").append($tr);
//创建单元格(这里是问题的关键。下面会说出来,标记一)
$td = $("<td><span><input type='file' name='files'/>></span></td>");
$tr.append($td);
$tr.append($("<td></td>"));
var $td = $("<td><a href='javascript:void()' style='color: blue; text-decoration: none' onfocus='this.blur()'>取消</a></td>");
$tr.append($td);
}
现在我的思路是这样的。有个判断是判断选择的图片是否过大,如果是就提示。然后把里面的value清空(因为无法清空,所以我选择用file替换之前的file)。代码如下:(当然:我也动态给每个file标签添加了chagne事件)
$("#tb input").live("change", function () { //这里tb里面只有input标签,所以可以这样找
var file = $(this);
file.attr("name", "fileSrc");
if (CheckFilePath($(this))) { //CheckFilePath()方法是判断上传的是否是图片
$('#form1').ajaxSubmit({
success: function (data, status) {
if (status == "success") {
if (data == "no") {
alert("不能上传大于1M的图片");
//标记二
file.parent().html("<input type='file' name='file6'/>");
}
}
}
});
问题描述:
看我红色字体标记的哪里。不是有个红色标记的span标记。
1、如果我不加那个span标签,当执行一次标记二(红色字体标出)处的代码。table表中(初始化一行有三列)就少一个td,直到最后也只剩下一个td。
2、可我加了span标签就没问题
我的问题:
file.parent()不是找到当前点击的父标签吗?file在td里面,父标签就是td然后(file.parent().html("<input type='file' name='file6'/>");)就是把里面的内容改变。但为什么会少个td
[最优解释]
//创建单元格(这里是问题的关键。下面会说出来,标记一)
$td = $("<td><span><input type='file' name='files'/>></span></td>");
name='files'/>>这个后面多了一个>
这种问题,麻烦以后自己仔细点
[其他解释]
哦。不好意思。是我贴代码的时候弄错了。源代码是这样的。
$td = $("<td><span><input type='file' name='files" + Math.random() + "'/></span></td>");
我为了让代码简洁。删除的时候少删除一个“>”括号。
[其他解释]
你可以试试不用html()这样的,也用append的方式,看会不会,因为有的浏览器原生不支持innerHTML,但我不知道jq是不是有封装过。
[其他解释]
append是追加。是吗?那这样就达不到替换的效果不是吗?我是想当用户选择的图片过大时,我就清空value。但file标签是不允许的。所以我就用替换的效果。但现在加个span标签却可以实现我以上说的代码。我只是很好奇是什么原因。想知其所以然。