当前位置: 首页 > 面试题库 >

输入文字中的清除图示

卢树
2023-03-14
问题内容

有没有一种快速的方法来创建带有右侧图标的输入文本元素,以清除输入元素本身(如google搜索框)?

我环顾四周,但只发现了如何将图标作为输入元素的背景。是否有jQuery插件或其他工具?

我想要输入文本元素中的图标,例如:

--------------------------------------------------
|                                               X|
--------------------------------------------------

问题答案:

将a添加type="search"到您的输入中
该支持相当不错,但在IE <10中不起作用

<input type="search">

旧浏览器的可清除输入

如果您需要IE9支持,请采取以下解决方法

使用标准<input type="text">和一些HTML元素:

/**
 * Clearable text inputs
 */
$(".clearable").each(function() {

  var $inp = $(this).find("input:text"),
      $cle = $(this).find(".clearable__clear");

  $inp.on("input", function(){
    $cle.toggle(!!this.value);
  });

  $cle.on("touchstart click", function(e) {
    e.preventDefault();
    $inp.val("").trigger("input");
  });

});
/* Clearable text inputs */
.clearable{
  position: relative;
  display: inline-block;
}
.clearable input[type=text]{
  padding-right: 24px;
  width: 100%;
  box-sizing: border-box;
}
.clearable__clear{
  display: none;
  position: absolute;
  right:0; top:0;
  padding: 0 8px;
  font-style: normal;
  font-size: 1.2em;
  user-select: none;
  cursor: pointer;
}
.clearable input::-ms-clear {  /* Remove IE default X */
  display: none;
}
<span class="clearable">
  <input type="text" name="" value="" placeholder="">
  <i class="clearable__clear">&times;</i>
</span>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

仅使用(没有其他元素)

设置一个·并使用它的背景图片:

/**
 * Clearable text inputs
 */
function tog(v){return v?'addClass':'removeClass';} 
$(document).on('input', '.clearable', function(){
    $(this)[tog(this.value)]('x');
}).on('mousemove', '.x', function( e ){
    $(this)[tog(this.offsetWidth-18 < e.clientX-this.getBoundingClientRect().left)]('onX');
}).on('touchstart click', '.onX', function( ev ){
    ev.preventDefault();
    $(this).removeClass('x onX').val('').change();
});

// $('.clearable').trigger("input");
// Uncomment the line above if you pre-fill values from LS or server
/* Clearable text inputs */
.clearable{
  background: #fff url(http://i.stack.imgur.com/mJotv.gif) no-repeat right -10px center;
  border: 1px solid #999;
  padding: 3px 18px 3px 4px;     /* Use the same right padding (18) in jQ! */
  border-radius: 3px;
  transition: background 0.4s;
}
.clearable.x  { background-position: right 5px center; } /* (jQ) Show icon */
.clearable.onX{ cursor: pointer; }              /* (jQ) hover cursor style */
.clearable::-ms-clear {display: none; width:0; height:0;} /* Remove IE default X */
<input class="clearable" type="text" name="" value="" placeholder="" />


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

技巧是为设置一些右填充(我使用18px),input然后将背景图像向右推,以至看不见(我使用right -10px center)。
18px的填充将防止文本隐藏在图标下方(可见时)。
jQ将添加显示清除图标的类x(如果input有值)。
现在我们需要的是用jQ作为类的输入目标,x并检测mousemove鼠标是否在18px“ x”区域内;如果在内部,则添加class onX。
单击onX类将删除所有类,重置输入值并隐藏图标。

Base64字符串:

data:image/gif;base64,R0lGODlhBwAHAIAAAP///5KSkiH5BAAAAAAALAAAAAAHAAcAAAIMTICmsGrIXnLxuDMLADs=


 类似资料:
  • 在chrome上,当用户单击清除按钮时,搜索输入会触发“搜索”事件。 是否有一种方法可以在Internet Explorer10上用javascript捕获相同的事件?

  • 问题内容: 我在下面使用一个变量。 这由我的输入字段使用。 激活后,我想清除我的输入字段。但是,我不确定该怎么做。 另外,如本例所示,有人指出我应该将属性用于输入值。我还不清楚这到底意味着什么。在这种情况下有什么意义? 问题答案: 您可以使用输入类型=“重置”

  • 问题内容: 我尝试用硒选择输入,但是当我使用它时,它不起作用: 我正在使用Mac,所以Keys.CONTROL无法正常工作,有人可以帮助我选择输入或清除输入吗? 谢谢 问题答案: Mac无法使用您需要的 试试:

  • 我的HTML如下所示: 然后,在我的剧本的开头,有这样的内容: 这在Firefox中运行良好;刷新页时,值清空并清除字段。 最后,如果我以任何方式编辑源代码,然后在Edge中重新加载页面,它将清空实际值并清除字段,但仅在初始重新加载时清空。之后,问题依然存在。这让我怀疑这是否是缓存问题。 有什么帮助或建议吗?

  • 问题内容: 我正在构建Codeigniter应用程序,并且正在尽最大努力防止SQL注入。我正在使用Active Record方法构造所有查询。我知道Active Record会自动清除输入内容,但是我想知道到底是什么程度?它只是转义所有引号,还是做更多呢?如何防止混淆的SQL注入或其他更高级的注入? 基本上,我正在寻找有关CI如何清理数据的深入说明。有人知道吗 问题答案: 完全像这样(对于MySQ

  • 问题内容: 我有一个包含各种输入字段和两个按钮的表单;一个用于提交,另一个用于取消。 我要单击的取消按钮时清空所有输入。到目前为止,我已经设法通过使用每个输入的 ref 属性来做到这一点。 但是,我想清空输入字段,而不必分别清空每个字段。我想要类似的东西(jQuery): 问题答案: 答案取决于您的输入是 受控 还是 不受控制 。如果不确定或需要更多信息,请查看官方文档对 受控组件 和非 受控组件