Answers:
@thebluefox总结了最多的内容。您还只需要使用JavaScript即可使该按钮正常工作。这是一个SSCCE,您可以复制'n'粘贴'n'运行它:
<!DOCTYPE html>
<html lang="en">
<head>
<title>SO question 2803532</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$('input.deletable').wrap('<span class="deleteicon" />').after($('<span/>').click(function() {
$(this).prev('input').val('').trigger('change').focus();
}));
});
</script>
<style>
span.deleteicon {
position: relative;
}
span.deleteicon span {
position: absolute;
display: block;
top: 5px;
right: 0px;
width: 16px;
height: 16px;
background: url('http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=4') 0 -690px;
cursor: pointer;
}
span.deleteicon input {
padding-right: 16px;
box-sizing: border-box;
}
</style>
</head>
<body>
<input type="text" class="deletable">
</body>
</html>
jQuery并不是必须的,它很好地将渐进增强所需的逻辑与源代码分开,您当然也可以继续使用纯 HTML / CSS / JS:
<!DOCTYPE html>
<html lang="en">
<head>
<title>SO question 2803532, with "plain" HTML/CSS/JS</title>
<style>
span.deleteicon {
position: relative;
}
span.deleteicon span {
position: absolute;
display: block;
top: 5px;
right: 0px;
width: 16px;
height: 16px;
background: url('http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=4') 0 -690px;
cursor: pointer;
}
span.deleteicon input {
padding-right: 16px;
box-sizing: border-box;
}
</style>
</head>
<body>
<span class="deleteicon">
<input type="text">
<span onclick="var input = this.previousSibling; input.value = ''; input.focus();"></span>
</span>
</body>
</html>
您最终只会使用难看的HTML(以及与跨浏览器不兼容的JS;))。
请注意,当用户界面外观不是您最关心的问题,而功能是,则只需使用<input type="search">
代替即可<input type="text">
。它将在支持HTML5的浏览器上显示(特定于浏览器的)清除按钮。
class="fa fa-remove"
在内部跨度上使用带有超赞字体的图标来显示漂亮的十字图标
top:
子范围并设置display: flex; align-items: center;
父范围来解决此问题。
如今,使用HTML5相当简单:
<input type="search" placeholder="Search..."/>
默认情况下,大多数现代浏览器都会在字段中自动呈现可用的清除按钮。
(如果使用Bootstrap,则必须在CSS文件中添加覆盖以使其显示)
input[type=search]::-webkit-search-cancel-button {
-webkit-appearance: searchfield-cancel-button;
}
Safari / WebKit浏览器在使用时type="search"
(例如results=5
和)也可以提供其他功能autosave="..."
,但它们也会覆盖您的许多样式(例如,高度,边框)。为了防止这些替代,同时仍保留X按钮之类的功能,您可以将其添加到CSS中:
input[type=search] {
-webkit-appearance: none;
}
有关所提供功能的更多信息,请参见css-tricks.comtype="search"
。
查看我们的jQuery-ClearSearch插件。这是一个可配置的jQuery插件-通过对输入字段进行样式设置使其适应您的需求非常简单。只需按以下方式使用它:
<input class="clearable" type="text" placeholder="search">
<script type="text/javascript">
$('.clearable').clearSearch();
</script>
我有一个创造性的解决方案,我认为您正在寻找
$('#clear').click(function() {
$('#input-outer input').val('');
});
body {
font-family: "Tahoma";
}
#input-outer {
height: 2em;
width: 15em;
border: 1px #e7e7e7 solid;
border-radius: 20px;
}
#input-outer input {
height: 2em;
width: 80%;
border: 0px;
outline: none;
margin: 0 0 0 10px;
border-radius: 20px;
color: #666;
}
#clear {
position: relative;
float: right;
height: 20px;
width: 20px;
top: 5px;
right: 5px;
border-radius: 20px;
background: #f1f1f1;
color: white;
font-weight: bold;
text-align: center;
cursor: pointer;
}
#clear:hover {
background: #ccc;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="input-outer">
<input type="text">
<div id="clear">
X
</div>
</div>
当然,最好的方法是使用越来越受支持的<input type="search" />
。
无论如何,为了一点编码的乐趣,我认为也可以使用表单的重置按钮来实现,这是工作结果(值得注意的是,除了使用此方法的搜索字段外,不能再使用其他输入,否则重置按钮将删除他们也是),不需要javascript:
form > div{
position: relative;
width: 200px;
}
form [type="text"] {
width: 100%;
padding-right: 20px;
}
form [type="reset"] {
position: absolute;
border: none;
display: block;
width: 16px;
border-radius: 20px;
top: 2px;
bottom: 2px;
right: -20px;
background-color: #ddd;
padding: 0px;
margin: 0px;
}
<form>
<div>
<input type="text" />
<input type="reset" value="X" />
</div>
</form>
也许这个简单的解决方案可以帮助您:
<input type="text" id="myInput" value="No War"/><button onclick="document.getElementById('myInput').value = ''" title="Clear">X</button></input>
@Mahmoud Ali Kaseem
我刚刚更改了一些CSS,以使其看起来有所不同,并添加了focus();。
https://jsfiddle.net/xn9eogmx/81/
$('#clear').click(function() {
$('#input-outer input').val('');
$('#input-outer input').focus();
});
body {
font-family: "Arial";
font-size: 14px;
}
#input-outer {
height: 2em;
width: 15em;
border: 1px #777 solid;
position: relative;
padding: 0px;
border-radius: 4px;
}
#input-outer input {
height: 100%;
width: 100%;
border: 0px;
outline: none;
margin: 0 0 0 0px;
color: #666;
box-sizing: border-box;
padding: 5px;
padding-right: 35px;
border-radius: 4px;
}
#clear {
position: absolute;
float: right;
height: 2em;
width: 2em;
top: 0px;
right: 0px;
background: #aaa;
color: white;
text-align: center;
cursor: pointer;
border-radius: 0px 4px 4px 0px;
}
#clear:after {
content: "\274c";
position: absolute;
top: 4px;
right: 7px;
}
#clear:hover,
#clear:focus {
background: #888;
}
#clear:active {
background: #666;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="input-outer">
<input type="text">
<div id="clear"></div>
</div>