这是jsfiddle:http: //jsfiddle.net/nGpmP/
当您单击该输入时,会出现右侧的按钮。这个按钮有onclick();事件。问题是,这个事件没有被触发,因为当你点击一个按钮时,它会消失(并且输入失去焦点),并且 javascript 没有被触发。我该怎么做才能执行这个javascript?
这是jsfiddle:http: //jsfiddle.net/nGpmP/
当您单击该输入时,会出现右侧的按钮。这个按钮有onclick();事件。问题是,这个事件没有被触发,因为当你点击一个按钮时,它会消失(并且输入失去焦点),并且 javascript 没有被触发。我该怎么做才能执行这个javascript?
在“按钮”上使用 mousedown 事件,因为单击太晚了。
$(document).on('mousedown', '.buttonIcon', function () {
   $(this).prev('input').val('');
});
    不要使用 CSS 焦点选择器来隐藏/显示按钮,而是使用 JavaScript 的 onBlur 隐藏按钮。使用作为 onBlur 方法的第一个参数给出的事件对象,您可以检查“目标”属性是否是按钮 - 如果是,则清除节点。或者,您可以在隐藏按钮之前使用具有较低值(例如 50)的 setTimout(),从而允许在隐藏按钮之前触发单击。
.buttonInput input:not(:focus) ~ .buttonIcon {
    display: none;
}
变成
.buttonInput .buttonIcon {
    display: none;
}
和
.buttonInput input:active ~ .buttonIcon {
    display: inline-block;
}
变成
.buttonInput .buttonIcon:active {
    display: inline-block;
}
这样按钮在您单击它之前不会消失。
我对您的 jsfeedle 进行了一些更改。添加了一些 ID 和 2 个 jquery 函数
<div class="buttonInput">
    <input id="inputbox" type="text" placeholder="Status..."/> 
    <div id="clearBtn" class="buttonIcon" onclick="ClearInput(this);">BTN</div> 
</div>
<script>
    $('#inputbox').click(function(){
        $('.buttonIcon').css('display','block');
    });
    $('#clearBtn').click(function(){
        $('#inputbox').val(' ');
    });
</script>