2012-06-06 4 views
1

'form.submit();'이 (가)있는 모든 인스턴스를 동적으로 변경하려고합니다. $ ('form')에 대한 특정 select 요소에 대한 onchange 함수에 나타납니다. 양식 자체에 대해 제출 이벤트가 트리거됩니다. 여기 onchange 함수의 동적 업데이트 문제

은 onchange를 기능을 업데이트해야하는 등의 선택 목록의 예 :

나는이 기능을 시도하고 업데이트 할 페이지의 헤더 섹션에 다음을 삽입
<td class="form-field selectinput" align="left" valign="left" style="width: 90px;" title="Select status type"> 
     <select class="filterlist" name="cStatus" tabindex="5" style="width: 90px;" onchange="form.submit();"> 
      <option value="" title="[All]">[All]</option> 
      <option value="A" title="Authorised">Authorised</option> 
      <option value="C" selected="" title="Cancelled">Cancelled</option> 
      <option value="U" title="Declined">Declined</option> 
      <option value="R" title="Requested">Requested</option> 
      <option value="T" title="Taken">Taken</option> 
      <option value="W" title="Withdrawn">Withdrawn</option> 
     </select> 
     </td> 

:

$(document).ready(function(){ 
$(function() { 
    $('select').each(function() { 
    var txt = this.onchange ; 
    alert(txt); 
    var patt=/form.submit()/g; 
    var result=patt.test(txt); 
    if (result) { 
     var txt = txt.replace('form.submit()',""); 
     this.onchange = eval(txt); 
    } 
    }); 
}); 

});

경고 메시지와 함께 제공 :

function onchange(event) { form.submit(); } Blockquote

다음 콘솔 로그에 다음 오류가 보여줍니다

this.onchange = function() { $('form').submit(); } 
: 나는 실제로는 다음과 같은 작업을 얻을 수

Uncaught TypeError: Object function onchange(event) { form.submit(); } has no method 'replace'

그러나 onchange에 form.submit()과 함께 다른 코드가있는 경우가 있습니다. 같은 : 그래서

form.submit();form.iYear.disabled=true;form.cGroupItem.disabled=true; 

내가 전체 함수 자체를 교체하지만, 잘라 싶지 않아 'form.submit를();' 와 '$ ('양식 ')로 교체,,로 위의 다음 나타납니다 그래서) (제출합니다.'난() 다양한 장소에서하지만 언제 toString() 및 평가 후면을 사용하려고했습니다

$('form').submit();form.iYear.disabled=true;form.cGroupItem.disabled=true; 

나는 문자열 txt를 편집하려고하는데, 객체를 계속 가져 오는 중에 메소드 오류가 발생하지 않습니다.

어떤 아이디어 ??

+0

더 빠른 답변을 위해, 당신은 편집 링크를 클릭하여 사용하는 언어 (? 자바 스크립트)에 해당하는 태그를 추가해야합니다 귀하의 질문 아래. – assylias

+0

onchange는 문자열이 아닙니다. 함수이기 때문에 "... 대체 방법이 없습니다"오류가 발생합니다. 경고를 사용할 때 문자열로 강제 변환됩니다. – Steve

+0

steve, 함수가 문자열로 조작 될 수있는 방법이 있습니까? 그것은 경고를 사용하는 것 이외의 문자열로 강제 수 있습니까 ?? –

답변

0

하는 대신 펑키 평가를하고 교체의 단지 이것을 시도 :

... 
    if (result) { 
     this.onchange = function(){}; //empty function 
    } 
... 
+0

게시물을 주셔서 감사합니다,하지만 내가 더 이상 다른 코드를 잃게 위의 사용하는 경우 form.submit() 함께 표시되는 코드를 보존하는 목표에 관한 문제를 조금 더 업데이트했습니다. –