2012-01-05 3 views
0

다른 이벤트가 동일한 함수를 호출하기를 원합니다. 나는 여기에서 다른 게시물을 읽었지만이 기능을 한 페이지에 사용하고 싶습니다. 나는 약이call jQuery function

:

상황은이 같은 것입니다. 80 목록 상자 (선택)를 양식에 넣고 jCombo (jQuery & jSON & php)를 통해 피드합니다. 먼저 테이블에 인덱스를 저장하기 때문에 각 선택 목록 상자 (.change())를 숨겨진 필드에 연결합니다 (업데이트 방법은 PHP로 작성되었습니다). 나는 그래서 내 내 이벤트 $("select#listbox").change({}); 변화, 분명히, 0

내 숨겨진 필드 값이 내가 발견이 상황을 갖는 수정에 대한 동일한 레코드 (같은 PHP 파일), jCombo 모든 <select lists>을 변경하고 0으로 초기화를 다시 열 때 문제는 선택 목록에서 함수를 관련시키지 않고 $ ("# AddButton") onmouseup ({...});과 관련없는 단순한 솔루션 (필자는 사일 전에 jQuery & Ajax를 사용하기 시작 함). 그래서 나는 80 숨겨진 필드에 쓰기 :

if ($("select#listbox_n_").val() != 0) { 
    $("#hidden_n_").val($("select#listbox_n_").attr('value')); 
} 

, N = 1 ... 80.

하지만 지금은 너무 업데이트 버튼이 작업을 반복해야합니다 :

  1. 이름으로 함수를 해결하기 위해 다른 방법이있다?
  2. 함수를 "저장"하는 가장 좋은 장소 (예 : 프로 시저 또는 무언가)는 호출하는 경우에만 실행하고 싶기 때문에 무엇입니까?
+1

코드를 읽을 수 있도록 질문의 서식을 지정하십시오. 오른쪽 또는 여기 상자를보십시오 : http://stackoverflow.com/markdown –

+5

당신의 말을 써서 이해해주십시오. –

+2

그래서 혼란스러워. 나는 최종 목표를 이해하려고 시도하는 것보다 코드 포맷팅에 대해 덜 걱정한다. 문제가 무엇인지에 대한 높은 수준의 개요가 대단히 도움이 될 것입니다. –

답변

0

여러 이벤트에서 하나의 기능을 호출하는 것으로 추측하고 있습니다. 그렇다면 기능을 작성하고 이벤트에서 참조하십시오. 그리고 기능을 배치하는 것과 마찬가지로, 그냥 document.ready ($(function() {...});) 외부에 배치하십시오.

설명하기 위해이 질문을 읽을 때 필자가 작성한 것이 있습니다. 텍스트 영역의 길이를 검사하여이를 반환합니다. 이것은 단순하고 단순한 HTML/jQuery입니다.

HTML :

<label for="message">Message: </label> 
<textarea name="message" id="message" rows="5" cols="70"></textarea> 

jQuery를 : 당신이 볼 수 있듯이

$(function() { 
     $("#message").keyup(checkLength); 
     $("#message").keydown(checkLength); 
     }); 

function checkLength() { 
    var maxlength = 255; 
    var charlength = $(this).val().length; 
    var returnstring = (charlength + " of " + maxlength + " characters used."); 
} 

, 기능 checkLength()가의 keyup 및 텍스트 영역에서를 keyDown 이벤트 모두에 두 번이라고합니다. 위에서 말했듯이, 그들은 document.ready 함수의 바깥쪽에 위치합니다. 그런 다음 최대 금액과 비교하여 추가 된 문자 수를 포함하는 문자열을 반환합니다. 마지막으로, 함수는 WITHOUT()이라고 부릅니다. 즉, 함수에 대한 참조 일 뿐이며 특정 이벤트가 발생하면 호출됩니다.

도움이 되었기를 바랍니다.

+0

고마워요! 한 가지 더. ' document.ready에서 호출되어야한다, (함수() {.; $ ("# 메시지")를 keyDown (checkLength). $ ("# 메시지")의 keyup (checkLength가)}) '$ 아니? 그래서 질문은 왜'$ (function() {...});} 메서드를 호출해야합니까? 대신에'$ ("message #)를 호출하십시오. keyup (checkLength); ' –

+0

@drLeo document.ready 문자가'# message '에 넣어지면 그 함수가 실행된다는 것을 말하는 것이다. 페이지가로드 될 때 실제로 함수를 호출하지 않습니다. 이것은 함수를 참조하기 때문에'.keyup (checkLength)'가 아니라'.keyup (checkLength()) '입니다. –

+0

;-) 감사합니다. –