1

ボタン イベントの結果として更新されるテキスト入力があります。テキスト入力の値がいつ変更されたかを検出したいと思います。以下の例を参照してください。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<script  type="text/javascript">
$(document).ready(function(){
   $('#text').bind("input change paste", function(){
      console.log("text changed");
      // do something
   });

   $('#click').click (function(){
      $('#text').val('something');
   });
});
</script>

<body>
   <input id='text' type='text'>
   <input id='click' type='button' value='click'>
</body>

後で、そのボタンがカレンダーをトリガーするので、ユーザーはテキスト入力を更新する日付/時刻を選択します。カレンダーはライブラリの一部であるため、変更したくありません。テキスト フィールドが新しい値を取得するタイミングを検出したいと考えています。

ありがとう!

4

2 に答える 2

2

使用している日付/時刻ピッカー ライブラリはイベントをまったく発生させないため、値が変更されたかどうchangeinputを確実に判断する唯一の方法は、タイマーで監視し、変更イベントを自分で発生させることです。これを行う 1 つの方法を次に示します。

// check for changes every 100 ms
setInterval(function() {
    var lastVal = $('#text').data('last-value');
    if (typeof lastVal === 'undefined') {
        lastVal = $('#text').val();
        $('#text').data('last-value', lastVal);
    }

    if (lastVal !== $('#text').val()) {
        $('#text').change(); // trigger the change event
    }
}, 100);

// setup your change handler 
$('#text').on("input change paste", function() {
    // before doing anything else, set the last-value data property
    $('#text').data('last-value', $('#text').val());

    // do something ...
    console.log('changed!');
});

// now programmitically updating the $('#text') element will result 
// in your change handler being triggered
$('#click').click (function(){
    $('#text').val('something');
});
于 2013-08-22T22:25:08.193 に答える