jQuery - 在更改时重置文件输入

时间:2017-04-26 13:47:05

标签: jquery file input

如果用户附加了不接受的文件,我试图清除该组件。我试图在它附加后立即尝试。我在这里看了一些例子,其中一些示例告诉我如何使用重置按钮,重置整个表单(我不想做的事情),或克隆组件(我做的事情)试过但它不起作用)。如果有人可以帮助我,我会很高兴。提前谢谢。

以下是我的例子:

$("#mycomponent").on("change", function()
{
    var extension = $(this).val().split(".").pop().toString();

    if((extension === "pdf") || (extension === "docx") || (extension === "doc"))
    {
        alert("OK");    
    }
    else
    {
        alert("File extension not accepted");

        var mycomponent = $("#mycomponent");
        mycomponent.replaceWith(mycomponent = mycomponent.clone(true));
    }
});

2 个答案:

答案 0 :(得分:3)

您可以使用val()清除组件,如下所示:

$("#mycomponent").on("change", function()
{
    var extension = $(this).val().split(".").pop().toString();

    if((extension === "pdf") || (extension === "docx") || (extension === "doc"))
    {
        alert("OK");    
    }
    else
    {
        alert("File extension not accepted");

        var mycomponent = $("#mycomponent");
        mycomponent.val("");
    }
});

答案 1 :(得分:2)

<强> Working fiddle

使用$(this).wrap('<form>').closest('form').get(0).reset(); $(this).unwrap(); 函数,如下所示:

$("#mycomponent").on("change", function(){
  var extension = $(this).val().split(".").pop().toString();

  if((extension === "pdf") || (extension === "docx") || (extension === "doc"))
  {
    console.log("OK");    
  }
  else
  {
    console.log("File extension not accepted");
    
    $(this).wrap('<form>').closest('form').get(0).reset();
    $(this).unwrap();
  }
});

希望这有帮助。

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" id="mycomponent" />
&#13;
pd.offsets.MonthBegin()
&#13;
&#13;
&#13;