2014-02-05 2 views
3

아래 스크립트는 약간 문제가 있습니다. 입력 필드에 텍스트를 쓸 수있는 스크립트를 만들려고하는데, 텍스트를 입력하면 포커스가있을 때 경고 메시지가 나타납니다. 입력 내용에 텍스트가 포함되어있는 경우에만 경고가 표시됩니다.초점을 맞출 때 경고 표시, 단지 한 번

그러나 문제는 일부 텍스트를 작성하고 삭제 한 다음 입력에 초점을 맞추면 실제로 다음에 내용을 쓰고 초점을 맞출 때 다음 번에 경고가 나타나지 않는다는 것입니다 .

지금은 아무 것도 쓰지 않았더라도 경고 기능은 항상 포커스가 사라지면 사라집니다.

경고 앞에 var already_alert_me_once = true을 추가하고 그 안에 모든 내용을 넣으려고했습니다 : if(already_alert_me_once == false), 그 트릭을 수행하지 않았습니다.

또한 $('#title').focusout(function()$('#title').one('focusout', function()으로 변경하려고 시도했으며 거의 ​​트릭을했습니다. 여기

내 현재 스크립트입니다

// When focus on title 


$('#title').focus(function() { 
    // Check if empty 
    if (!$(this).val()) { 
     $('#title').one('focusout', function() { 
      if ($(this).val()) { 
       alert("YEP"); 
      } 
     }); 
    } 
}); 

.. 그리고 Here's a Fiddle

그래서 내 질문은, 그렇게하는 방법은 이 쓰여지고 그 후에 다시는 (페이지를 다시로드하지 않는 한) 일 때만 알림이 표시됩니다.

희망을 말하면 내 뜻을 이해할 수 있습니다.

감사합니다 - TheYaXxE

+0

오타가 on'이 아닌' –

+1

@TomStyles'one' one'이 그것을 의미'라고한다 한 번만 실행됩니다. – Archer

+0

http://jsfiddle.net/rkumar670/T7tFd/6/ –

답변

2

거의 쉬운 솔루션, 사실 말이다 필요없이 또는 포커스 이벤트 :

$('#title').blur(function() { 
    if($(this).val()) { 
     alert('!!'); 
     $(this).unbind('blur'); 
    } 
}); 

http://jsfiddle.net/T7tFd/5/

+0

또한 좋은 해결책! 나는 당신이 스스로에게 말하고있는 것처럼 가장 쉬운 해결책이기 때문에 이것을 선택한다. – TheYaXxE

+0

기쁘게 도울 수있다;) – Alex

3

당신은 사용하여 초점 바인딩을 해제 할 수 있습니다

$('#title').unbind('focus'); 

Working Fiddle

+0

도 수정 해 주셔서 감사합니다. 이것은 게시 된 것보다 좋지 않은 경우에도 작동합니다. –

+0

훌륭한 솔루션! 고마워 :) – TheYaXxE

0

대신 함수 내에서 변수 "already_alert_me_once"를 넣어, 그것은 전역 변수합니다. 그런 식으로 범위가 유지됩니다. #title에 이미 클릭했음을 나타내는 속성을 추가 한 다음 코드를 실행하기 전에 해당 속성이 존재하는지 확인하십시오.

관련 문제