我有一个表单,用户必须在其中初始化一堆不同的部分。
<script>
$.function(){
$('.initialMe').change(function(){
var id = $(this).attr('id');
alert(id);
});
});
</script>
<?php
echo "<div class='signature'>Initial Here:<input type='text' class='initialMe' id='sign[service1]' name='sign[service1]' size='4'></div>";
echo "<div class='signature'>Initial Here:<input type='text' class='initialMe' id='sign[service2]' name='sign[service2]' size='4'></div>";
?>
我想在初始化文本框时触发操作。我不想使用更改,因为他们必须点击某处才能触发事件。我不想使用keyup
,因为事件将在首字母缩写后触发。我不知道用户是否会使用2个字母或3个首字母。这不是可提交的表格。可以将其视为法律文档,用户必须在该文档中初始化页面的不同部分。我有什么选择?
答案 0 :(得分:3)
您可以使用keyup
和setTimeout
的组合。我想说的是,将其绑定在keyup
中,并给用户留出一些时间让他们感觉已经完成然后检查。
$(function () {
var tmr = 0;
$("input").keyup(function () {
clearTimeout(tmr);
tmr = setTimeout(function () {
alert("Checking...");
}, 1000);
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input />
&#13;
这样,每次都会检查,但会给出一些时间。当用户在一秒钟内再次键入时,它会清除之前的计时器,因此不会进行检查。
答案 1 :(得分:1)
为什么不在blur()
上这样做?
如果用户点击或标记离开该字段,则表明他们已完成imho。
另一种选择,如果它是同一个用户初始化表单的几个部分 - 您可以等到第一个字段完成后,检查用户是否正确,然后不要与其他人做任何事情,直到那时的首字母与第一个完成的字段匹配。