2013-05-06 73 views
0

我创建了一个文本字段组件,其中包含常规文本字段和旁边的清除(x)按钮。虚拟键盘在锚点上简单消失点击

这是加价:

<div class="input-clear"> 
    <input type="email" name="user" placeholder="Email address" /> 
    <a href="#">clear</a> 
</div> 

这是我用来初始化代码:

[].forEach.call(document.getElementsByClassName('input-clear'), function(el) { 
    var input = el.getElementsByTagName('input')[0], 
    a = el.getElementsByTagName('a')[0], 
    updateField = function() { 
     if (input.value.length) { 
      a.style.display = 'inline'; 
     } else { 
      a.style.display = 'none'; 
     } 
    }, 
    clearField = function(event) { 
     event.preventDefault(); 
     input.value = ''; 
     input.focus(); 
     updateField(); 
    }; 

    if (input && a) { 
     input.addEventListener('keyup', updateField, false); 
     input.addEventListener('change', updateField, false); 

     a.addEventListener('click', clearField, false); 

     updateField(); 
    } 
}); 

clearField()事件处理程序清空场,消除了清除按钮和然后再次聚焦文本字段。

问题

当点击了清除按钮,虚拟键盘简要地消失在模糊和焦点之间。是否可以始终保持键盘可见?

顺便说一句,我知道,当选择的全部文本,然后取出清除按钮不会消失,但我不是太担心那种情况下:)

+0

如果您使用'touchstart'而不是'click',并且在输入失去焦点之前取消事件会发生什么? – 2013-05-06 04:06:25

+1

@DaggNabbit那么,密封交易:)你想写它作为一个答案? – 2013-05-06 04:11:18

+0

当然,为什么不:) – 2013-05-06 04:12:33

回答

1

尝试监听touchstart,而不是click,它应该在输入失去焦点之前触发(并且它也会更响应一些)。