0

テキストエリアがあります:

<input id="startdate" name="startdate" type="text" value="" style="width:23%">

on('change')` をリッスンする

$('#startdate').on('change', function () {
  var $formelem = $(this);
  // DO SOME WORK
  ... 
});

テキスト領域の値を変更するコード:

var keyval = location.search.replace('?', '').charAt(0);
  var filterDates;
  var clicked = [];

  function persistence(keyval) {
    function template(keyval, filterDates) {
      for ( i=0 ; i < keyval.length ; i++ ) {
        $('#'+keyval[i]).click();
      };
      if (filterDates) {
        return $('#startdate').val(filterDates);
      };
    };
    if (typeof parseInt(keyval[0]) === 'number' && keyval[0] % 1 == 0) {
      switch(keyval[0])
        {
        case '1': 
          keyval = ['.', '..', '...' ];
          filterDates = "2006-04";
          template(keyval, filterDates);
          break;
        case '2': 
          keyval = ['.', '..', '...' ]; 
          break;
        default:
          template(keyval);
        };
    } else {
      template(keyval);
    }
  };

ページが読み込まれるときに、URL に が含まれている1場合は、textarea の値をに変更し2006-04、変更を登録して、変更機能が発生するようにします。現在、テキストは更新されていますが、関数は実行されていません。ページが読み込まれていないことに関係があるのではないかと思うので、document.ready() に配置しましたが、まだ機能していません。私が見逃しているものは他にありますか?APIには、イベント ハンドラーをアタッチする必要があることについては何も言及されていないので、on('change') でうまくいくと思いました.....

また、手動で変更すると、関数は本来の処理を実行するため、関数内のコードではありません。また、他の場所で初期値を動的に設定したという事実は、それと関係がありますか?

$(document).ready(function () {
    blinks(1);
    persistence(keyval);
});

//place the first value of start[] in the startdate box
$('#startdate').val(start[0]);
4

1 に答える 1

2

以下を使用して変更をトリガーできます。

$('#startdate').trigger('change');
于 2013-04-11T16:03:15.340 に答える