В бэкэнде я использую ASP.NET MVC 1.0 с движком Spark View. Когда я проверяю исходный код после обновления F5 в Firefox 3.5.2, страница отображается правильно; однако, если вы посмотрите на страницу визуально, в поле смежного поля формы появится значение из предыдущего поля.
Я включил достаточно кода, чтобы вы могли просто понять, что я пытаюсь сделать.
Снова, рендеринг в порядке, и окончательный вид / HTML-код в порядке. Это то, что я вижу на экране, это неправильно. Я использую скрытые переменные; но проблема возникла и до его использования.
Обратите внимание, что в приведенном ниже коде у меня есть 2 различных поля идентификатора: "date_ {projectTask.ProjectTaskId}" и "finishDate_ {projectTask.ProjectTaskId}, которые получают рендеринг в нечто вроде" date_1 "и" finishDate_2 ".
<table>
<for each="ProjectTask projectTask in projectTasksByProjectPhase">
<input type="hidden" value="${projectTask.ProjectTaskId}" />
<tr>
<td class="date">
<div class="box">
<div class="datefield">
<input type="text" id="date_${projectTask.ProjectTaskId}" value="${startDate}" /><button type="button" id="show_${projectTask.ProjectTaskId}" title="Show Calendar"><img src="~/Content/yui/assets/calbtn.gif" width="18" height="18" alt="Calendar" ></button>
</div>
</div>
</td>
<td>
<div class="box">
<div class="datefield">
<input type="text" id="finishDate_${projectTask.ProjectTaskId}" value="${finishDate}" /><button type="button" id="finishShow_${projectTask.ProjectTaskId}" title="Show Calendar"><img src="~/Content/yui/assets/calbtn.gif" width="18" height="18" alt="Calendar" ></button>
</div>
</div>
</td>
</tr>
</for>
</table>
К вашему сведению: $ {} используются для вывода переменных в движке Spark View.
Я также использую соединение YUI 2.7 для выполнения вызовов Ajax с целью обновления базы данных для событий «изменение» и «нажатие клавиши ввода / ввода». Я могу убедиться, что вызовы AJAX сделаны правильно, а значения полей формы все еще действительны.
Проблема возникает, когда я просто делаю обновление F5; по какой-то причине «finishDate_1» заполняется значением из «date_1».
Эта проблема возникает, просто нажав «date_1» и нажав F5; поэтому смежное поле просто заполняется, даже если нет вызовов AJAX.
Вот код Javascript, который я вызываю к концу тела "
YAHOO.util.Event.onDOMReady(
function() {
var idList = YAHOO.util.Dom.getElementsBy(function (el) { return (el.type == 'hidden'); }, 'input');
len = idList.length;
var startDatePickers = new Array();
var finishDatePickers = new Array();
for (var i = 0; i < len; i++) {
var id = idList[i].value
startDatePickers[i] = new DatePicker("date_" + id, "show_" + id, "cal_" + id);
startDatePickers[i].valueChanged.subscribe(updateDate, 'S');
finishDatePickers[i] = new DatePicker("finishDate_" + id, "finishShow_" + id, "finishCal_" + id);
finishDatePickers[i].valueChanged.subscribe(updateDate, 'F');
}
}
}
Поле формы копируется перед обработкой любого кода Javascript, потому что я вызываю код Javascript ближе к концу тела после того, как весь HTML отображается. Итак, я предполагаю, что это проблема обновления в Firefox? Что вы, ребята, думаете?
Как вы можете видеть выше, я создал свой собственный объект выбора даты календаря, который позволяет либо вводить дату в тексте вручную, либо нажимать кнопку для просмотра календаря и выбора даты. После ввода или выбора даты будет сделан вызов AJAX, чтобы обновить базу данных в серверной части.
Спасибо всем за быстрый ответ.