2014-10-20 2 views
0

input_1 텍스트 상자의 값이 변경되면 함수를 트리거하려고합니다.getElementById onchange 결과 객체가 함수가 아닙니다.

즉 getElementById ('input_1') .onchange 결과 객체는 함수가 아닙니다.

HTML

<form method="GET" id="game_form"></form> 
<table border="1" style="background-color:#FFFFCC;border-collapse:collapse;border:1px solid #FFCC00;color:#000000;width:100" cellpadding="3" cellspacing="3"> 
    <tr> 
    <td id="cell_1"><input type="text" id="input_1" form="game_form" value="x"></td> 
    <td id="cell_2"><input type="text" id="input_2" form="game_form"></td> 
    <td id="cell_3"><input type="text" id="input_3" form="game_form"></td> 
    </tr> 
    <tr> 
    <td id="cell_4"><input type="text" id="input_4" form="game_form"></td> 
    <td id="cell_5"><input type="text" id="input_5" form="game_form"></td> 
    <td id="cell_6"><input type="text" id="input_6" form="game_form"></td> 
    </tr> 
    <tr> 
    <td id="cell_7"><input type="text" id="input_7" form="game_form"></td> 
    <td id="cell_8"><input type="text" id="input_8" form="game_form"></td> 
    <td id="cell_9"><input type="text" id="input_9" form="game_form"></td> 
    </tr> 
</table> 

자바 스크립트

$(window).load(
    function checkInput() { 
//  alert("I am an alert box!1"); 
     var cell = document.getElementById('input_1'); 
     alert(cell.value); 
     **document.getElementById('input_1').onchange**(
      doSomething() 
     ); 
    } 
); 


function doSomething(){ 
    alert("I am an alert box!2"); 

} 
+0

왜 '

답변

3

잘못된 구문을 사용하고 있습니다. 당신은

var el = document.getElementById("input_1"); 
el.addEventListener("change", doSomething, false); 

또는 jQuery로 addEventListener

원하는 :

var $el = $('#input_1'); 
$el.on('change', doSomething); 
+1

OP에 jQuery가 있습니다. 그는 '.on ('change ', ...)를 원할 가능성이 높습니다.' – Alnitak

+0

@Alnitak. 건배. – Jivings

+0

_ 당신은 항상 주문 (명령)과 최면 사이의 무언가처럼 들리지만 그렇지 않습니까? :) – Regent

0

당신은 onchange를 결합하거나이를 달성하기 위해 방법을 결합 자바 스크립트 이벤트를 사용하는 jQuery를 선택기를 사용해야합니다.

그래서이 될 것 $('#input_1').change(function() { });

또는

var myEl = document.getElementById('input_1'); 

myEl.addEventListener('change', function() { 
    // do something 
}, false); 
0

문제는 .onchange 재산, 작동하지 것입니다.

당신은, 그런데, 이것에 대한 jQuery를 .on()를 사용할 수 있습니다 .on("change", ...에 대한

$('#input_1').on("change", function() 
{ 
    doSomething(); 
}); 

또는 .change() 바로 가기 :

$('#input_1').change(function() 
{ 
    doSomething(); 
}); 

대신 .change().addEventListener()onclick를 사용하려면 somewhy 경우, 다음과 같이 사용할 수 있습니다.

document.getElementById('input_1').onchange = doSomething; 

Fiddle.

+0

코딩 제안 - _always_는'.change '대신'.on ('change ', ...)'를 사용하여 호출이 _registration_ 또는 _trigger_인지 여부를 명백히 알 수 있습니다. (항상 후자에'.trigger' 너무!) – Alnitak

+0

위대한, 매력처럼 작동해라! 감사! – Damien

+0

@Alnitak 글쎄, 당신은 그것이 차이가 무엇인지를 아는 사람들에게는 분명하고 다른 사람들은 차이의 존재에 대해 거의 알지 못한다는 것을 이해한다고 생각합니다. – Regent

0

시도 :

$('#input_1').change(function(){ 
    alert('changed'); 
}); 

이 작동합니다!

+1

OP의 코드가 무엇이 문제인지 설명하고 답을 수정하여 * 문제를 해결하는 이유를 설명하십시오. –

0

Onchange는 기능이 아니며 속성입니다. 원하는 기능과 동일한 onchange를 설정해야합니다. 문제가 JQuery와 태그됨에 따라

document.getElementById('input_1').onchange = function(){ 
//Do what you want 
} 
0

이 밖으로 시도 ... 다음

$(document).ready(function(){ // when all DOM is loaded 
    $('#input_1').on('change',function(){ // # is id based selector 
     // you event handler logic 
    }); 
}); 

는 희망이 도움이 사용할 수 있습니다 ...

$(document).ready(function(){ // When DOM is ready... 
 
\t $('input').on('change',function(){ // Every Input field would get into this Event... to change only for id=input_1 -> '#input_1' 
 
\t \t //Alternative to 'change' would be 'keyup', because change is only called when the input field losts his focus... 
 
\t \t alert(this.id); 
 
\t \t switch(this.id) 
 
     { 
 
      case 'input_1': alert('input 1!'); 
 
       break; 
 
      case 'input_2': alert('input 2!'); 
 
       break; 
 
      //.... 
 
     } 
 
\t }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table border="1" style="background-color:#FFFFCC;border-collapse:collapse;border:1px solid #FFCC00;color:#000000;width:100" cellpadding="3" cellspacing="3"> 
 
    <tr> 
 
    <td id="cell_1"><input type="text" id="input_1" form="game_form" value="x"></td> 
 
    <td id="cell_2"><input type="text" id="input_2" form="game_form"></td> 
 
    <td id="cell_3"><input type="text" id="input_3" form="game_form"></td> 
 
    </tr> 
 
    <tr> 
 
    <td id="cell_4"><input type="text" id="input_4" form="game_form"></td> 
 
    <td id="cell_5"><input type="text" id="input_5" form="game_form"></td> 
 
    <td id="cell_6"><input type="text" id="input_6" form="game_form"></td> 
 
    </tr> 
 
    <tr> 
 
    <td id="cell_7"><input type="text" id="input_7" form="game_form"></td> 
 
    <td id="cell_8"><input type="text" id="input_8" form="game_form"></td> 
 
    <td id="cell_9"><input type="text" id="input_9" form="game_form"></td> 
 
    </tr> 
 
</table>

인사

관련 문제