输入框获取焦点时动态显示“叉叉”的清空图表:在输入框中输入内容时,右边显示“叉叉”按钮;输入框为空的时候,“叉叉”按钮消失。

如下图:

input输入框输入内容后显示“X小叉叉”图标 可以清除输入框的内容-风君子博客
input输入框输入内容后显示“X小叉叉”图标 可以清除输入框的内容-风君子博客

主要难点是在获取焦点的同时获取输入内容:方法 1 和 2 是 google 到的,但兼容性不够;方法 3 是自己用 js 实现。

1. H5 type="search" 类型:

H5 input 标签的一个类型;不支持 H5 就 JJ 了。
<input id="search" name="search" type="search"/> 

2. css 实现:

<style type="text/css"> 
        .input { padding: 5px; margin: 0; border: 1px solid #beceeb; }
        .clear { display: none; position: absolute; width: 16px; height: 16px; margin: 6px 0 0 -20px; background: url(a.png) no-repeat; outline: none; }
        .input::-ms-clear { display: none; }
        .input:valid + .clear { display: inline; }
</style>
<input class="input" id="box_bak" required /><a href="javascript:;" class="clear" οnclick="cssClear();" />
<script type="text/javascript">        
function cssClear() {
        alert("cssClear");
}
</script>

3. js 实现:

之前说了,在输入框获取焦点输入的时候,是获取不到输入值的。几近放弃的时候,惊喜发现,miniUI 提供了getInputText()、hsetInputText() 两个方法,就是解决在获取焦点时候不能获取输入值得问题。现在问题得以解决。
miniUI引入方法:http://www.miniui.com/docs/quickstart/

<style type="text/css">
.clear {display: none;position: absolute;width: 16px;height: 16px;margin: 4px 0 0 -22px;background:url(/dqy/swsj/images/fzz/clear.png) no-repeat;outline: none;}
</style>
<input class="input" id="box_bak" required /><a href="javascript:;" class="clear">
<script type="text/javascript">
if(mini.get("inputId").getInputText() != "") {
            $("#clear").show();
} else {
            $("#clear").hide();
}
</script>