2009-10-11 1 views
0

나는 $.change() 이벤트를 가지고 있지만 제출 버튼을 누르면 변경 이벤트가 다시 발생합니다. 텍스트가 입력 텍스트 상자에 입력 될 때만 한 번만 발생합니다.

답변

4

편집 : 어떤 이유로 든 입력 버튼을 클릭하면 변경 이벤트가 호출됩니다. (Anthony에게 감사)

이 문제를 해결하는 방법은 단순히 제출 버튼을 선택하지 않는 것입니다.

당신은

$('input:text') 

는 텍스트 필드를 선택하려면 시도 할 수 있습니다.

또는 당신은 제출 버튼 (들)을 제외한 모든 입력 요소를 선택하려면

$('input:not(:submit)') 

을 할 수 있습니다.

Read about selectors here

편집 : 작동하지 않습니다 대신 <button> 사용. 여전히 input 필드로 계산되지만 값은 버튼에 표시된 텍스트와 별개입니다.

+0

예. 작동하지 않는군요. 더 많은 정보를 얻기 위해 코드를 편집했습니다. –

+0

이 근무했습니다. 내 부분에 일부 오타가 있습니다. –

0

$('input').change(function(e){ alert("fire") });은 해당 입력을 <input type="submit".../>을 포함한 모든 입력 요소에 적용합니다. 만약 당신이 실제로 모든 단일 텍스트 입력 요소가 change 이벤트를 원한다면, 당신은``$ { 'input [type = text]' ''() {{{("fire"}}); id 나 클래스를 사용하는 것이 가장 좋습니다.

0

@ 마크,

당신은 그 자리에 있고 내가 도와 수 있다면 난 당신을 편집 할 것입니다. 언젠가 곧 ...

@ajowi,

는 버튼 입력입니다 제출합니다. 적어도 그들의 대부분은 다음과 같습니다

<input type="submit" /> 

그래서 마크, 그들이 버튼 텍스트로 무엇을하고 있는지 아니다, 그것은 버튼입니다 입력이, 그것을 클릭의 행위에 의해 변경되고 있음이다.

그의 솔루션은 훌륭했습니다.

$("input:text").change 
+0

그건 실제로 작동하지 않습니다, 공간은 "자손"을 의미합니다. 그러므로 선택자는 다른 입력의 자손 인 텍스트 입력을 찾고 있습니다. 공간을 제거하면 모두 좋습니다. –

+0

TM이 옳았습니다. 이 코드는 작동하지 않았습니다. –

+0

나는 놀랐다. 나는 이전에 그와 관련된 이슈들을 가지고 있었기 때문에 공간이 두 가지를 모두 커버 할 것이라고 긴장했다. 머리를 가져 주셔서 감사합니다. – Anthony