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 包含 a 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 回答