我有一個帶有keydown的文本框,單擊並更改綁定到它的事件處理程序。當用戶在此文本框中輸入文本時,預覽會同時更新。這很好用!從自動完成中選擇事件
但是,當用戶輸入一些文本,然後從自動完成中選擇時,只有用戶輸入的文本在預覽中可見。
只有在用戶離開文本框或點擊文本框或輸入更多字符時纔會更新。
用戶從自動填充中選擇時是否有任何事件被觸發?
注意:我沒有使用jquery自動完成插件或任何東西,只是Web瀏覽器的autocoplete。
我有一個帶有keydown的文本框,單擊並更改綁定到它的事件處理程序。當用戶在此文本框中輸入文本時,預覽會同時更新。這很好用!從自動完成中選擇事件
但是,當用戶輸入一些文本,然後從自動完成中選擇時,只有用戶輸入的文本在預覽中可見。
只有在用戶離開文本框或點擊文本框或輸入更多字符時纔會更新。
用戶從自動填充中選擇時是否有任何事件被觸發?
注意:我沒有使用jquery自動完成插件或任何東西,只是Web瀏覽器的autocoplete。
<script type="text/javascript">
function fillReview() {
var email = document.getElementById("email");
var review = document.getElementById("email-review");
review.innerHTML = email.value;
}
</script>
<input type="text" id="email" onkeyup="fillReview();" />
<span id="email-review"></span>
我剛碰到同樣的問題。瀏覽器(本例中爲Chrome)在點擊提議的自動完成值時不會觸發任何事件。因此,我使用setInterval來每隔100ms左右輪詢我的輸入字段,以查看它們的值是否已更改,如果是,請調用相應的函數。
這裏是我的代碼(用了jQuery):
var $form = $(".user");
var $email = $("input[name='email']",$form);
// start polling when the field is focused
$email.focus(function()
{
var $inp = $(this);
$inp.data("val_old",$inp.val());
$inp.data("val_poll",setInterval(function()
{
if ($inp.data("val_old") != $inp.val())
{
checkEmail(); // value has changed, take some action
$inp.data("val_old",$inp.val());
}
},100));
});
// stop polling on blur
$email.blur(function()
{
clearInterval($(this).data("val_poll"));
$(this).removeData("val_old val_poll");
});
我曾經有一個onkeypress事件的事件,但與此輪詢它不再需要。
不是很漂亮,但有效。適用於任何瀏覽器。
你能發表一些代碼嗎?這個問題是否發生在所有瀏覽器中? –
使用Internet Explorer?也許這會讓你感興趣:http://stackoverflow.com/questions/343192/why-does-the-javascript-onchange-event-not-fire-if-autocomplete-is-on – Frug