提问者:小点点

jQuery日期选择器在添加了动态文本区域的IE9中不起作用


我有一个超文本标记语言表,多行包含表单控件,如输入类型="文本"和文本区域。每个的最后一列是日期字段,是输入类型,其他字段是文本区域。默认字段和动态添加的行都很好:我正在使用下面的行添加动态行表格。

$('#DataTable tr: last')。之后(tr td对齐=证明文本区域行=1个文本区域=50个文本区域td td对齐=证明输入类型=文本ID=Date1 td tr);

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

$("Date1"). datepicker({dateFormat:"dd/mm/yy",showOn:"button",firstDay:1,show其他月份:真,前文本:'

我最近添加了动态行为来增加文本区域高度并检查最大长度(因为最大长度在IE9中也不起作用)。

将动态行为添加到文本区域的代码如下:

$("#DataTable文本区"). keydown(函数(e){增加行(this,e);});

增量函数如下:

函数增加行(text Area aObj, e){while(text Area aObj.scrollHeight

  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();
          }
      }   }

有了这个,日期选择器停止工作。我可以看到日历,但不能像往常一样选择日期。

有什么想法吗?

最好的问候,MouliPC。


共1个答案

匿名用户

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

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

该问题是由于IE9中不支持的row属性造成的。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();
            }
        }
    }