2012-01-09 2 views
0

Я использую jquery-1.6 с jquery-validation-1.9.0, jquery.form.2.36, jquery-ui-1.8.2 плагинами.JQuery IE7 clone возвращает «0» является нулевым или нет объектом

копирует следующий блок кода, который может содержать от одного до многих переключателей, которые сгруппированы по имени элемента «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 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> 

Как когда я пытаюсь проверить форму, используя плагин проверки, я получаю a, '0' - это null или не объект, ошибка в IE7.

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

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

Я предполагаю, что это связано с методом клонирования, который в некоторых случаях вызывает ошибку в IE7.Is там работу вокруг этого?

Как это прекрасно работает в Firefox, IE8 & Chrome.

Cheers.

ответ

0

Попробуйте это.

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

У меня была эта проблема раньше, и это было решено вот так.

Ссылка ссылка: https://stackoverflow.com/a/2874893/17447

+0

@naween, спасибо за это, но метод клон работает, как я могу видеть фрагмент правильно клонированы в IE разработчика (IE7). Это проверка, которая не работает, если я прокомментирую правило «corsdt1», все работает отлично. Не знаете, почему он возвращает «нулевой объект», когда он явно присутствует в dom ?? – polecat

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

должен быть

var crsrads = $clone.find('input:radio[name="corsdt"]'); 
Смежные вопросы