2012-12-10 4 views
2

RadioButtonListTextBox을 갖는 Repeater을 포함하는 양식을 가지고 있습니다. 사용자가 텍스트 상자 중 하나의 라디오 단추 나 텍스트를 변경하면 해당 Repeater 항목에 대한 선택한 항목과 관련 텍스트가 데이터베이스에 저장됩니다. 라디오 버튼 변경 2 초 사용자 후 데이터를 저장 텍스트 변경 문제가javascript에서 setTimeout 타이머를 수동으로 어떻게 수동으로 실행할 수 있습니까?

를 입력 중지 할 때 그러나 TextBox을 위해 내가 타이머를 만드는 오전 때문에 .change() 기능의 쉬운 때 저장

, 타이머가 실행되기 전에 사용자가 페이지를 떠나거나 다른 TextBox에서 타이핑을 시작하면 수동으로 타이머를 실행해야합니다. 어떻게해야합니까?

내 자바 스크립트는 다음과 같습니다

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); 
}); 

답변

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(); 
}); 
+0

주셔서 감사합니다 저장 기능을 사용할 수 있습니다, 나는 아직도 자바 스크립트를 파악하고 있는데 그것은 단지 지연 함수 호출이 아닌 실제 객체 몰랐어요. – Rachel

2

흐림에 저장 함수를 호출하고 해당 청취하는 경우 이벤트 당신이 거기

$("textarea").blur(function(){ 
    //Call your save function here 
}); 
+0

이 작업은 내가 수행하려고 시도한 작업을 수행하는 더 나은 방법을 제공하지만, 원래 setTimeout을 수동으로 실행하는 방법에 대해 질문했던 질문에 대답하기 때문에 다른 대답을 수락합니다. +1하는 것이 어쨌든, 변경 사항을 저장하는 더 좋은 방법입니다. :) – Rachel

관련 문제