Javascript 用名称“重置单个文件输入值”的按钮;文件[]";(数组)

Javascript 用名称“重置单个文件输入值”的按钮;文件[]";(数组),javascript,jquery,Javascript,Jquery,我正在尝试创建一个删除按钮来清除的值。我的问题是,我不知道如何使每个按钮指向各自的 我正在使用JQuery插件ezdz上传和创建图像预览,我可以使用$ezdz预定义变量轻松地将按钮添加到每个输入: $ezdz.parent('div').find('div.arrow_box').html('<p><a href="#" onClick="window.resetMethod($(this.form[\'file[]\']));return false;">Quitar

我正在尝试创建一个删除按钮来清除
的值。我的问题是,我不知道如何使每个按钮指向各自的

我正在使用JQuery插件ezdz上传和创建图像预览,我可以使用
$ezdz
预定义变量轻松地将按钮添加到每个输入:

$ezdz.parent('div').find('div.arrow_box').html('<p><a href="#" onClick="window.resetMethod($(this.form[\'file[]\']));return false;">Quitar imagen</a></p>');
$ezdz.parent('div').find('div.arrow_box').removeClass('hide');
但问题在于按钮

<a href="#" onClick="window.resetMethod($(this.form[\'file[]\']));return false;">Quitar imagen</a>

onClick
处理程序中的
this.form[…]
将失败。我想您的控制台将显示一个错误。在调用时,它对应于锚元素(
a
),并且该元素没有表单属性

因此,请替换:

<a href="#" onClick="window.resetMethod($(this.form[\'file[]\']));return false;">Quitar imagen</a>
由于
返回false
,您可以将
onclick
部分简化为:

<a href="#" onClick="return resetMethod($(this));">Quitar imagen</a>

如果你能向人们提供更多关于你的问题是什么、原因是什么以及发生了什么错误的信息,你会得到更好的答案。简单看一下,我会大胆猜测,您添加按钮的方式并没有将单击侦听器绑定到窗口。是的,对不起,只是将单击侦听器绑定到窗口并不会将每个按钮与各自的输入绑定。我不太擅长jquery。谢谢你的回答,如果我提供的信息不好,我很抱歉。是的,我在控制台中发现了这个错误。在搜索脚本时,我不会再着急了。我刚刚发现(多亏了你)这个函数会重置整个表单。。。我要找的是只重置输入类型文件(不是全部),只重置按钮上方的文件。我编辑了。我正在寻找函数来执行如下操作:
$(this).parent('div').find('input').get(0.reset()这可能吗?还是我尝试的方法不对?我添加了一个只重置文件上载输入的函数版本。
reset()
对单个文件上载输入无效。您必须在文档中重新创建节点,我在回答中建议的代码就是这样做的。我不能用新的输入替换输入吗?而不是全部?
TypeError: $(...).parent(...).find(...).get(...) is undefined
<a href="#" onClick="window.resetMethod($(this.form[\'file[]\']));return false;">Quitar imagen</a>
<a href="#" onClick="window.resetMethod($(this));return false;">Quitar imagen</a>
window.resetMethod = function (elem) {
    var frm = elem.closest('form');
    if (frm.length) {
        frm.get(0).reset();
    }
    return false; // cancel default
}
<a href="#" onClick="return resetMethod($(this));">Quitar imagen</a>
window.resetMethod = function (elem) {
      frm = elem.closest('form');
      console.log(frm);
      if (frm.length) {
          upload = frm.find('input[type=file]');
          console.log(upload);
          if (upload.length) {
              // clear file-upload by
              // re-injecting the html for it in the dom:
              upload.replaceWith($("<p>").append(upload.clone()).html());
          }
      }
      return false; // cancel default
}