2016-06-05 2 views
0

У меня есть DatePicker, который отлично работает, пока не будет создан AJAX-вызов.Datepicker не работает после вызова AJAX

Есть идеи?

?><select onChange="Contract_PropertyDetails();" class="element select medium" id="contract_property" name="contract_property" width="300" style="width: 300px"> 
<option value="0" >Select property</option> 

Contract_PropertyDetails(); это моя функция AJAX.

function Contract_PropertyDetails() { 

var cp = document.getElementById('contract_property').value; 
var companyid = document.getElementById('id_company').value; 
var url = "incl_list_properties_contract.php?Company="+ companyid + "&cp="+cp; 
url = encodeURI(url); 

    if (window.XMLHttpRequest) { 
    // code for IE7+, Firefox, Chrome, Opera, Safari 
    Contract=new XMLHttpRequest(); 

    } else { // code for IE6, IE5 
    Contract=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    Contract.onreadystatechange=function() { 
    if (Contract.readyState===4 && Contract.status===200) { 
     document.getElementById("DETAILS_OF_LESSEE").innerHTML=Contract.responseText; 
    } 
    }; 

    Contract.open("GET",url,true); 
    Contract.send(); 
} 

DETAILS_OF_LESSEE - это мой DIV, где отображается результат.

с текстом incl_list_properties_contract.php Я получил дополнительную форму для поля для выбора даты.

<input type="text" id="Datepicker1" > 

А вот функция в Index.php

$(function() { 
    $("#Datepicker1").datepicker("destroy"); 

    $("#Datepicker1").datepicker({ 
     changeMonth:true, 
     changeYear:true 
    }); 
}); 

Я заметил, что если поле для выбора даты находится вне ответа AJAX, уровень перед вызовом. Следующий DIV автоматически добавляется, и программа выбора даты работает нормально.

ui-datepicker-div Однако, если входные текстовые поля отвечают за ответ функции AJAX, поэтому, очевидно, на странице еще нет, поэтому в первый раз DIV не существует.

Итак, вопрос заключается в том, как выполнить сборщик даты с функцией AJAX при отправке ответа и обновлении содержимого DIV. ??

Ожидание ответа пожалуйста.

ответ

0

Естественно, плагин выбора даты не может изменять элементы, которые не существуют при выполнении кода. Вы должны инициализировать плагин после добавления элемента на страницу.

Это было бы сделано в обратном вызове для вызова AJAX. Возможно, что-то простое:

Contract.onreadystatechange=function() { 
    if (Contract.readyState===4 && Contract.status===200) { 
     document.getElementById("DETAILS_OF_LESSEE").innerHTML=Contract.responseText; 
     $("#Datepicker1").datepicker({ 
      changeMonth:true, 
      changeYear:true 
     }); 
    } 
}; 
+0

Привет, Дэвид, нет, я просто попробовал ваше решение. Тем не менее DIV для DatePicker не генерируется, а функция datepicker не работает. –

+0

@RafalKanabus: Можете ли вы предоставить дополнительную информацию о проблеме? Если вы повторно используете 'id', это приведет к сбою. Если код выполняется, когда элемент отсутствует на странице, это приведет к сбою. Могут существовать и другие проблемы. Когда вы отлаживаете это, где/how * конкретно * это не удается? Каково состояние целевого элемента DOM? Определяет ли селектор jQuery что-нибудь вообще? Вам нужно будет отладить это, чтобы посмотреть, что происходит. – David

+0

Ну, идентификатор уникален; вы только что дали мне идею, и я переместил сценарий AJAX из нижней части страницы (index.php) в файл it self_list_properties_contract.php) сразу после ввода текстового поля. Теперь он выглядит следующим образом: [code] 'Дата от Но это не имело никакого значения; все еще не работает. –

Смежные вопросы