답변:
@thebluefox가 가장 요약했습니다. 또한 버튼을 작동시키기 위해 JavaScript 만 사용해야합니다. 다음은 SSCCE입니다. 복사하여 붙여 넣기를 실행할 수 있습니다.
<!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;) 만 끝납니다.
UI 룩앤필이 가장 큰 관심사는 아니지만 기능은, <input type="search">
대신에 사용하십시오 <input type="text">
. HTML5 지원 브라우저에서 (브라우저 별) 지우기 버튼이 표시됩니다.
class="fa fa-remove"
멋진 크로스 아이콘을 표시하는 내부 스팬에
top:
자식 범위에서 제거 display: flex; align-items: center;
하고 부모 범위에서 설정하여 문제를 해결했습니다 .
요즘 HTML5에서는 매우 간단합니다.
<input type="search" placeholder="Search..."/>
대부분의 최신 브라우저는 기본적으로 필드에 사용 가능한 지우기 단추를 자동으로 렌더링합니다.
(부트 스트랩을 사용하는 경우 css 파일에 재정의를 추가하여 표시해야 함)
input[type=search]::-webkit-search-cancel-button {
-webkit-appearance: searchfield-cancel-button;
}
사용하는 경우 사파리 / 웹킷 브라우저도 추가 기능을 제공 할 수있는 type="search"
것처럼, results=5
그리고 autosave="..."
, 그러나 또한 (테두리, 예를 들어, 높이) 당신의 스타일의 많은 우선합니다. X 버튼과 같은 기능을 계속 유지하면서 이러한 재정의를 방지하기 위해 CSS에 이것을 추가 할 수 있습니다.
input[type=search] {
-webkit-appearance: none;
}
에서 제공하는 기능에 대한 자세한 내용은 css-tricks.com을 참조하십시오 type="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" />
입니다.
어쨌든 약간의 코딩 재미를 위해 폼의 재설정 버튼을 사용하여 달성 할 수 있다고 생각했으며 이것이 실제 결과입니다 (다른 입력을 할 수는 없지만 검색 방식은이 접근법을 사용하거나 재설정 버튼은 지워집니다) 그들도), 자바 스크립트가 필요하지 않습니다 :
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>