上面的解决方案很棒,但是如果用户自然只是点击占位符值旁边的输入框,打算保留并继续它,它将被完全删除。
基于上述解决方案,我为我做了以下解决方案:
HTML:
JS:
jQuery(document).ready(function ($) {
function putValueBackFromPlaceholder() {
var $this = $('#other');
if ($this.val() === '') {
$this.val($this.attr('placeholder'));
$this.attr('placeholder','');
}
}
$('#other')
.on('click', function(e) {
var $this = $(this);
var inpLeft = $this.offset().left;
var inpWidth = $this.width();
var clickedLeft = e.clientX;
var clickedInInpLeft = clickedLeft - inpLeft;
var arrowBtnWidth = 12;
if ((inpWidth - clickedInInpLeft) < arrowBtnWidth ) {
$this.attr('placeholder',$this.val());
$this.val('');
}
else {
putValueBackFromPlaceholder();
}
})
.on('mouseleave', putValueBackFromPlaceholder);
});
对我来说,页面上有很多输入框,我只希望这个有这种行为,所以我使用id并将其设置为“个人”。 如果您希望将其更改为更通用的函数,则必须将putValueBackFromPlaceholder与发生单击的元素以及事件本身绑定。