2010-02-03 3 views
0

, 나는 드롭 다운이 같은 일부 코드가 이벤트 onchange를 드롭 다운 및 텍스트 상자의 차이 : onChange가 실행 자바 스크립트 함수를 포함하는 변수입니다의 asp.net MVC :이 이벤트에 통증을 갖는

return helper.DropDownList(data.ModelEntityId.ToString(), selectList, "<Select>", new { onChange = onChange }); 

,이 작품은 훌륭합니다. 그러나 텍스트 버전 (아래)에서는 페이지가로드 될 때 onchange 이벤트가 발생합니다 (DropdownList와 달리 다른 동작은 성가신 일입니다). 자바 스크립트 함수는 페이지가로드 될 때 호출하면 다음과 같은 에러가 발생합니다 찾을 수 없습니다 자바 스크립트 "정의는"...

return helper.TextBox(data.ModelEntity.ModelEntityId.ToString(), data.ValueText, new { onchange = onChange }); 

예 (그 다음 연속적으로 작동) 자바 스크립트

function SuitabilityChecked(providerId, checkId, parentId) { 
      alert("meep"); // just to test error still occurs 
     }; 

내가 텍스트 상자에 사용해야하는 다른 이벤트가, 아니면 뭔가 "특별한 내가 할 필요가?

답변

4

당신은 당신의 핸들러를 적용하여 완전히이 문제를 피할 수 페이지로드가 완료된 후 눈에 띄지 않게 (인라인이 아님). MVC에서이를 수행하는 표준 방법은 jQuery입니다.

<script type="text/javascript"> 
    $(function() { 
     $('input#<%= data.ModelEntity.ModelEntityId %>').change(function() { 
       ... 
     }); 
    }); 
</script> 

더욱 쉽게 특정 요소에 핸들러를 적용 할 것 클래스를 사용하여, 원하는 경우 - 단지 도우미에 htmlAttributes 해시에 클래스 정의를 추가하고 적용 할 수 onloaded 처리기에서 선택을 변경 핸들러를 선택한 클래스가있는 요소로만 변경하십시오.

+0

어떻게하면 내 인라인 문이 동적이라고 생각합니까? (onChange 변수는 데이터베이스에서로드 됨) 제 jquery는 내 onChange 테이블을 반복해야하고 위의 행을 적용해야합니다. –

+0

또는 switch 문을 사용하는 단일 JavaScript 함수를 간단하게 생성 할 수 있습니다. 호출 할 올바른 핸들러 (아마도 특수한 도우미를 사용하여 빌드 됨)와 같은 핸들러를 모두에게 적용하십시오. – tvanfosson

+0

좋아요, 기본 작업을하려고 할 때 변경 이벤트가 발생하지 않습니다 (경고음이 울리지 만 2 단계는 안 함). jQuery (문서) .ready (function() { alert ("$ ('입력 # 67'). (function() { alert ("meep 2"); }), }}); –