JQuery IE7克隆返回'0'为null或不是对象

时间:2012-01-09 00:47:42

标签: jquery

我正在使用jquery-1.6和jquery-validation-1.9.0,jquery.form.2.36,jquery-ui-1.8.2插件。

我复制了以下代码块,其中可以包含一对多按钮,这些按钮按元素名称'corsdt'分组

 <div class="container-wrapper">
....
    <div class="rght-container">
       <input type="radio" name="corsdt" id="rad_corsdt_1" class="radio ui-widget-content ui-corner-all" value="course_title=Fundamentals%20for%20New%20Managers&amp;course_code=341.564&amp;mercref=341.564-12-HI-03" />
    </div>
 </div>

并使用jquery

将其附加到表单
var $clone = $('.container-wrapper').clone();

    var crsrads = $clone.find("input:radio[name=corsdt]");

var no_of_rad = crsrads.length + 1; //find total no. of orig radio inputs, incr ids to avoid duplicate ids
    crsrads.each(function(index){
        var i = index + no_of_rad;
        $(this).attr({id: 'rad_corsdt_' + i, name: 'corsdt1'});
    });

 $('#dialog-dtwrapper').append($clone); 

这将附加到表单中的目标div标记,如预期的那样

<div id="dialog-dtwrapper">
      <div class="container-wrapper">
       ....
         <div class="rght-container"><input id="rad_corsdt_2" class="radio ui-widget-content ui-corner-all ez-hide valid" type="radio" value="course_title=Fundamentals%20for%20New%20Managers&amp;course_code=341.564&amp;mercref=341.564-12-HI-03" name="corsdt1">
      ...      
      </div>
    </div>
</div>

然而,当我尝试验证表单时,使用验证插件,我得到一个,'0'为null或不是对象,IE7中的错误。

var aform = $("#formName").validate({
....
rules: {
 ....
  corsdt1 : "required",
 ....
},
messages: { 
....
 corsdt1 : "please select a course date",

},
submitHandler: function(form) {....

我认为这与克隆方法有关,在某些情况下会导致IE7中的错误。是否有解决方法?

因为这在Firefox,IE8和&铬。

干杯。

2 个答案:

答案 0 :(得分:0)

试试这个。

var html = $('.container-wrapper').get(0).cloneNode(true);  // Clone HTML using DOM API
var $clone = $(html);

之前我遇到过这个问题,就这样解决了。

参考链接:https://stackoverflow.com/a/2874893/17447

答案 1 :(得分:0)

var crsrads = $clone.find("input:radio[name=corsdt]");

应该是

var crsrads = $clone.find('input:radio[name="corsdt"]');