2009-07-01 4 views
7

웹 사이트에서 빠른 변경을 위해 양식과 jQuery를 사용하고 있습니다. 버튼 텍스트를 '저장 됨'으로 변경하고 싶습니다. 몇 초 후에 업데이트로 다시 변경하여 사용자가 값을 다시 변경할 수 있습니다. 물론 그들은 지금 'Saved!'를 칠 수 있습니다. 버튼을 다시 누르면 좋아 보이지 않습니다.몇 초 후에 jQuery를 사용하여 입력 버튼 텍스트를 변경하십시오.

$("form.stock").submit(function(){ 
    // Example Post 
    $.post($(this).attr('action'), { id: '123', stock: '1' }); 
    $(this).find(":submit").attr('value','Saved!'); 
    // This doesn't work, but is what I would like to do 
    setTimeout($(this).find(":submit").attr('value','Update'), 2000); 
    return false; 
}); 

답변

13

setTimeout의 첫 번째 인수는 function입니다. 익명의 함수 안에 코드를 넣어두면 좋다.

$("form.stock").submit(function(){ 
    // Example Post 
    $.post($(this).attr('action'), { id: '123', stock: '1' }); 
    var submit = $(this).find(":submit").attr('value','Saved!'); //Creating closure for setTimeout function. 
    setTimeout(function() { $(submit).attr('value','Update') }, 2000); 
    return false; 
}); 

지금이 코드를 테스트 할 수 없습니다. 작동하지 않는지 알려주세요.

편집 : redsquare에서 제안한 것처럼 제출 버튼 자체에서 클로저를 만드는 것이 좋습니다.

+0

분명히 지적 해 주셔서 감사합니다. :) –

+1

제출 선택기를 두 번 실행할 필요가 없으며 setTimeout 내에서 사용할 var에 넣을 수 있습니다 – redsquare

+0

동의,이 방법을 반영하도록 코드를 수정했습니다. – SolutionYogi

0

당신은 아마 함수의 행동을 포장 할 :

setTimeout(function(){$(this).find(":submit").attr('value', 'Update')}, 2000); 
+0

나는 '이'setTimeout 익명 함수 안에 제대로 작동하지 않을 것 같아요. 하나는 'this'를 포착하기 위해 클로저를 사용해야합니다. – SolutionYogi

0
$("form.stock").submit(function(){ 
    var $form = $(this); 
    $.post($form.attr('action'), { id: '123', stock: '1' }); 
    var $submit = $form.find(":submit").attr('value','Saved!'); 
    window.setTimeout(function() { 
     $submit.attr('value','Update') 
    }, 2000); 
    return false; 
}); 
내가 제안
2

, 아마도, 인터페이스 (내 의견으로는 더 나은에서) 다른 버튼의 텍스트를 변경하는 대신 피드백을 제공하는 . jGrowl 또는 dialog 위젯을 사용하여 post 메소드의 콜백을 통해 메시지를 표시 할 수 있습니다.

+0

+1 사용의 편리성에 대한 의견 (피드백) – karim79

6

실제로 "버튼"태그 인 경우 변경하려면 사용하십시오. 해당 버튼이 온 클릭을 예비 성형하는 경우

$('#button_id').html('New Text'); 

물론 당신은 쉽게 그냥 객체와 $ (이) .html 중에서 ('새 텍스트')와 같은 함수에 (이) 통과 할 수; 대신.

희망이 있으면 도움이됩니다.

관련 문제