我需要一个输入字段来匹配其内容并找到关于它的非常好的帖子Adjust width of input field to its input
我已经实现了这个JS版本(来自前一个线程的Michael):http://jsfiddle.net/4Qsa8/
$(document).ready(function () {
var $inputs = $('.resizing-input');
// Resize based on text if text.length > 0
// Otherwise resize based on the placeholder
function resizeForText(text) {
var $this = $(this);
if (!text.trim()) {
text = $this.attr('placeholder').trim();
}
var $span = $this.parent().find('span');
$span.text(text);
var $inputSize = $span.width();
$this.css("width", $inputSize);
}
$inputs.find('input').keypress(function (e) {
if (e.which && e.charCode) {
var c = String.fromCharCode(e.keyCode | e.charCode);
var $this = $(this);
resizeForText.call($this, $this.val() + c);
}
});
// Backspace event only fires for keyup
$inputs.find('input').keyup(function (e) {
if (e.keyCode === 8 || e.keyCode === 46) {
resizeForText.call($(this), $(this).val());
}
});
$inputs.find('input').each(function () {
var $this = $(this);
resizeForText.call($this, $this.val())
});
});
虽然有一个问题:我的网站上有谷歌自动填充功能,当用户从下拉列表中选择特定地址时,字段大小不会改变。
是否可以轻松添加当前的JS以使其适用于下拉菜单选择?
编辑
这是自动完成JS
function initializeAutocomplete(id) {
var element = document.getElementById(id);
if (element) {
var autocomplete = new google.maps.places.Autocomplete(element, { types: ['geocode'] });
google.maps.event.addListener(autocomplete, 'place_changed', onPlaceChanged);
}
}
// Injecte les données dans les champs du formulaire lorsqu'une adresse est sélectionnée
function onPlaceChanged() {
var place = this.getPlace();
document.getElementById("street_number").value = '';
document.getElementById("route").value = '';
document.getElementById("postal_code").value = '';
document.getElementById("locality").value = '';
document.getElementById("sublocality").value = '';
document.getElementById("country").value = '';
for (var i in place.address_components) {
var component = place.address_components[i];
for (var j in component.types) {
var type_element = document.getElementById(component.types[j]);
if (type_element) {
type_element.value = component.long_name;
}
}
}
var longitude = document.getElementById("longitude");
var latitude = document.getElementById("latitude");
longitude.value = place.geometry.location.lng();
latitude.value = place.geometry.location.lat();
}
// Initialisation du champs autocomplete
google.maps.event.addDomListener(window, 'load', function() {
initializeAutocomplete('autocomplete');
});
并且HTML看起来像这样(不是整个形式,它是相当大但是不变的输入元素):
<div class="resizing-input">
<input id="autocomplete" placeholder="address" type="text" name="place[addressfull]" />
<span style="display:none"></span>
</div>
答案 0 :(得分:0)
使用jQuery's
on
事件
$inputs.find('input').on('input',function(e){
//Your code here
});