【问题标题】:Hide / show depending on input type=file value根据输入类型隐藏/显示=文件值
【发布时间】:2020-01-02 14:11:16
【问题描述】:

当我通过选择文件按钮选择/取消选择文件时,它工作正常:

$("input[type='submit']").toggle(false);

$("input[type='file']").change(function() {
  if ($(this).val() != "") {
    $("#btn").toggle();
  } else {
    $("#btn").toggle();
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input id="fld" type="file" name="image" id="file">

<input id="btn" type="submit" value="Upload / Edit picture" name="upload_picture" id="upload_picture" class="btn" />
<br>
<br>
<div id="remove_button">Remove</div>

单击“选择文件”按钮并选择一个文件。将出现上传/编辑图片按钮。现在再次单击选择文件按钮,但不要选择文件并退出小弹出窗口。上传/编辑图片按钮将消失。

在我的情况下,如果我通过单击 &lt;div id="remove_button"&gt;Remove&lt;/div&gt; 清除该值,我希望清除 input="file" 值,并且上传/编辑图片按钮消失

有没有办法做到这一点?

JSFiddle

【问题讨论】:

标签: javascript jquery html input


【解决方案1】:

将此代码添加到您的 javascript 中

$("#btn").toggle(false);

$("#fld").change(function(){

if($(this).val() != "")
{
 $("#btn").toggle();
} 
else{
 $("#btn").toggle();
}
});

$("#remove_button").click(function(){
  $("#fld").val('');
  document.getElementById("btn").style.visibility = "hidden";
})

并从您的 html 中删除 id 标记。按钮有两个 id 改成这样

<input id="btn" type="submit" value="Upload / Edit picture" name="upload_picture" 
class="btn" />

【讨论】:

  • 我选择了这个,因为它最接近原始问题。
【解决方案2】:

您可以做的是将点击事件侦听器绑定到#remove_button 元素(我建议您应该使用&lt;button&gt; 而不是&lt;div&gt;)。

在回调中,您可以简单地将文件输入的值设置为空字符串,从而有效地重置字段。请记住,您需要使用.trigger('change') 根据文件输入值手动重新调用显示/隐藏逻辑:

const $submit = $("input[type='submit']");
$submit.hide();

$("#fld").change(function() {
  $submit.toggle(!!this.value);
});

$('#remove_button').click(function() {
  $('#fld').val('').trigger('change');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input id="fld" type="file" name="image" id="file">

<input id="btn" type="submit" value="Upload / Edit picture" name="upload_picture" id="upload_picture" class="btn" />
<br>
<br>
<button id="remove_button">Remove</button>

【讨论】:

  • @RoryMcCrossan 感谢您的关注!我在发布我的答案时有点仓促:现在更新它:)
猜你喜欢
  • 2020-10-08
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
  • 1970-01-01
  • 2017-04-01
  • 2013-07-22
  • 1970-01-01
相关资源
最近更新 更多