2013-01-15 24 views
5

Próbuję mieć pewne funkcje dotyczące zmiany pola tekstowego, który jest tylko do odczytu. Ale gdy próbuję zaktualizować pole tekstowe przy użyciu javascript, zdarzenie change nie jest uruchamiane dla pola tekstowego.Zdarzenie Fire Onchange dla TextBox, gdy tylko readonly jest prawdziwe

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('input[id$=_txtTest]').bind("change", function() { 
       alert("test"); 
      }); 
         }); 
     function ChangeText() { 
      $('input[id$=_txtTest]').val('hello'); 
     } 
    </script> 

Wywołuję metodę ChangeText po kliknięciu przycisku. Ale nie uruchamia zdarzenia textchange dla pola tekstowego.

Czy ktoś może mi powiedzieć, co jest nie tak?

+0

Możliwa duplikat : http://stackoverflow.com/questions/3600680/input-textbox-onchange-is-not-firing-when-data-is-assigned-to-input-textbox?rq=1 –

+0

Powiel też: http://stackoverflow.com/questions/4672505/why-does-the-jquery-change-event-not-trigger-ho---set-value-of-a-select-us –

+0

Masz tylko wartość true dla pola wejściowego? Czy wartość rzeczywiście zmienia się na "cześć", gdy wywołujesz zmianę tekstu? –

Odpowiedz

8

Więc trzeba zrobić w ten sposób: http://jsfiddle.net/kmvSV/1/

$(document).ready(function() { 
    $('input[id$=_txtTest]').bind("change", function() { 
    alert($(this).val()); 
    }); 
    $('button').bind("click", function() { 
    $('input[id$=_txtTest]').val('hello').trigger('change'); 
    }); 
}); 
2

Zdarzenie zmiany jest wywoływane przez rzeczywiste zdarzenia użytkownika, a nie akcje javascript.

może wyzwalać zdarzenia zmiany, tak jak poniżej:

$('input[id$=_txtTest]').val('hello').change(); 
2

można zrobić tak

function setValueOfTextBox() 
{ 
    var myElement = document.getElementById("textboxid"); 
    myElement.value = "hello"; 
    //following code fire change event for you text box 
    if (myElement.onchange) 
     myElement.onchange(); 
} 
Powiązane problemy