ฉันต้องการไอคอนเล็ก ๆ ที่น่าประทับใจเมื่อคลิกแล้วจะเป็นการลบข้อความในกล่อง <INPUT>
นี่เป็นการประหยัดพื้นที่แทนที่จะมีลิงค์ที่ชัดเจนด้านนอกของกล่องอินพุต
ทักษะ CSS ของฉันอ่อนแอ ... นี่คือภาพหน้าจอของลักษณะที่ iPhone ดู
ฉันต้องการไอคอนเล็ก ๆ ที่น่าประทับใจเมื่อคลิกแล้วจะเป็นการลบข้อความในกล่อง <INPUT>
นี่เป็นการประหยัดพื้นที่แทนที่จะมีลิงค์ที่ชัดเจนด้านนอกของกล่องอินพุต
ทักษะ CSS ของฉันอ่อนแอ ... นี่คือภาพหน้าจอของลักษณะที่ iPhone ดู
คำตอบ:
@thebluefox สรุปทั้งหมดแล้ว คุณเพียงแค่บังคับให้ใช้ JavaScript เพื่อให้ปุ่มนั้นทำงานได้ นี่คือ SSCCE คุณสามารถคัดลอก 'n'paste'n'run ได้:
<!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 ที่น่าเกลียดยิ่งกว่าเดิม
ทราบว่าเมื่อ look'n'feel UI ไม่ได้เป็นกังวลมากที่สุดของคุณ แต่การทำงานจะแล้วเพียงแค่ใช้แทน<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.com สำหรับข้อมูลเพิ่มเติมtype="search"
เกี่ยวกับคุณลักษณะที่มีให้โดย
HTML5 แนะนำประเภทการป้อนข้อมูล 'ค้นหา' ที่ฉันเชื่อว่าทำในสิ่งที่คุณต้องการ
<input type="search" />
ตรวจสอบปลั๊กอินjQuery-ClearSearch ของเรา มันเป็นปลั๊กอิน jQuery ที่สามารถกำหนดค่าได้ - ปรับให้เหมาะกับความต้องการของคุณโดยการใส่สไตล์ฟิลด์อินพุตให้ตรงไปตรงมา เพียงใช้มันดังต่อไปนี้:
<input class="clearable" type="text" placeholder="search">
<script type="text/javascript">
$('.clearable').clearSearch();
</script>
ตัวอย่าง: http://jsfiddle.net/wldaunfr/FERw3/
คุณไม่สามารถวางมันลงในกล่องข้อความได้ แต่ทำให้มันดูเหมือนมันอยู่ข้างในซึ่งน่าเสียดายที่ต้องมี CSS: P
ทฤษฎีห่อหุ้มอินพุตใน div นำเส้นขอบและพื้นหลังออกจากอินพุตจากนั้นจัดสไตล์ div ขึ้นให้มีลักษณะเหมือนกล่อง จากนั้นปล่อยปุ่มของคุณหลังจากช่องป้อนข้อมูลในรหัสและงานดี '
เมื่อคุณได้มันไปทำงาน;)
ฉันมีทางออกที่สร้างสรรค์ฉันคิดว่าคุณกำลังมองหา
$('#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 เพื่อให้มันดูแตกต่างและเพิ่มการโฟกัส ();
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>