我有一个包含Repeater
的表单,其中包含RadioButtonList
和TextBox
。当用户更改单选按钮或其中一个TextBox中的文本时,该Repeater项的选定项和相关文本应保存到数据库中。
由于.change()
功能,单选按钮更改时保存很容易,但是对于TextBox
,当文本更改时我创建了一个计时器,在用户停止输入后2秒保存数据< / p>
问题是,如果用户离开页面或在计时器执行之前开始键入不同的TextBox,我需要手动执行计时器。我怎么能这样做?
我的javascript看起来像这样:
var typingTimer; //timer identifier
var doneTypingInterval = 2000; //time in ms, 2 second for example
$('textarea').on('input', function () {
// Clear timer
clearTimeout(typingTimer);
// Set new timer to save form, passing current repeater item to Save method
var parent = $(this).closest('.my-repeater-section');
typingTimer = setTimeout(function () { saveForm(parent); }, doneTypingInterval);
});
答案 0 :(得分:2)
计时器只是一个延迟的函数调用。因此,命名您的功能,您将能够“手动:”
var typingTimer; //timer identifier
var doneTypingInterval = 2000; //time in ms, 2 second for example
$('textarea').on('input', function () {
// Clear timer
clearTimeout(typingTimer);
// Set new timer to save form, passing current repeater item to Save method
var parent = $(this).closest('.my-repeater-section');
function callback() {
saveForm(parent);
}
typingTimer = setTimeout(callback, doneTypingInterval);
// call it manually like usual:
// callback();
});
答案 1 :(得分:2)
在模糊时调用你的保存功能,当用户离开那个textarea时它会失去焦点,如果你听那个事件,你可以在那里使用你的保存功能
$("textarea").blur(function(){
//Call your save function here
});