soluzioni sopra sono grandi, ma se l'utente clicca naturalmente giusto accanto al valore segnaposto, all'interno della casella di input, con l'intenzione di mantenere e proseguilo, sarà completamente cancellato.
Quindi, sulla base delle soluzioni di cui sopra, ho fatto la seguente soluzione per me:
HTML:
<input id="other" list="values" value="<?php echo $val; ?>">
<datalist id="values">
<option value="orange">
<option value="banana">
</datalist>
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);
});
Per me non sei molte caselle di input su la pagina, e voglio solo che questo abbia questo comportamento, quindi lavoro con id e lo faccio "personale". Se desideri modificarlo con la funzione più generica, devi associare putValueBackFromPlaceholder
con l'elemento su cui si è verificato il clic e l'evento stesso.
fonte
2017-07-28 12:29:01
La tua domanda non è chiara. –
Si prega di spiegare come la domanda non è chiara. –