jQuery datepicker在IE9中没有添加动态textarea

时间:2014-07-08 07:09:29

标签: jquery datepicker internet-explorer-9 textarea

我有一个HTML表,其中多行包含表单控件,例如input type =" text"和textareas。每个的最后一列是日期字段,输入类型,其他字段是textareas。一切都工作正常,默认字段和动态添加行:我使用下面的行添加动态行表。

$(' #DataTable tr:last')。之后(        TR          td align = justify            textarea rows = 1 cols = 50            textarea的          TD          td align = justify            input type = text id = Date1          TD        TR);

在插入如下所示的新行后添加日期选择器:

$(" Date1")。datepicker({dateFormat:" dd / mm / yy",showOn:" button",firstDay:1,showOtherMonths: true,prevText:'<',nextText:'>'});

我最近添加了动态行为以增加textarea高度并检查maxlength(因为maxlength在IE9中也不起作用)。

将动态行为添加到textarea的代码如下:

$(" #DataTable textarea")。keydown(function(e){ increaseRows(this,e); });

IncreaseRows函数如下:

  

function increaseRows(textAreaObj,e){       while(textAreaObj.scrollHeight< textAreaObj.offsetHeight){textAreaObj.rows--; }

  while(textAreaObj.scrollHeight > this.offsetHeight) {
      textAreaObj.rows++;         }   textAreaObj.rows++;

      var $this = $(textAreaObj);
      var maxlength = $this.attr('maxlength');
      if (!!maxlength) {
          var text = $this.val();
          if (text.length > maxlength) {
              // truncate excess text (in the case of a paste)
              $this.val(text.substring(0,maxlength));
              e.preventDefault();
          }
      }   }

有了这个,datepicker就停止了工作。我能够看到日历,但不能一如既往地选择日期。

有什么想法吗?

最诚挚的问候, MouliPC。

1 个答案:

答案 0 :(得分:0)

问题通过jsfiddle的以下修改得到解决。

http://jsfiddle.net/gjqWy/155/#run

问题是由于IE9不支持的rows属性。并且JS方法修改如下:

function increaseRows(textAreaObj, e) { 
        textAreaObj.oninput = function() {
            textAreaObj.style.height = "";
            textAreaObj.style.height = Math.min(textAreaObj.scrollHeight, 300) + "px";
        };

        var $this = $(textAreaObj);
        var maxlength = $this.attr('maxlength');
        if (!!maxlength) {
            var text = $this.val();
            if (text.length > maxlength) {
                // truncate excess text (in the case of a paste)
                $this.val(text.substring(0,maxlength));
                e.preventDefault();
            }
        }
    }