Как запретить Google Chrome кэшировать мои данные, особенно скрытые при повторном нажатии?
У меня есть приложение asp.net mvc, в котором есть довольно много скрытых входов для хранения значений и форматирования их имен, чтобы я мог использовать привязку Model позже, когда я отправляю форму.
Я наткнулся на странную ошибку с Chrome, которой у меня нет с IE или Firefox, когда пользователь отправляет форму и нажимает кнопку "Назад", я обнаружил, что Chrome также сохранит мои скрытые входные значения.
весь этот кусок генерируется с помощью JavaScript, поэтому я считаю, что Chrome кеширует это.
function addProductRow(productId, productName) {
if (productName != "") {
//use guid to ensure that the row never repeats
var guid = $.Guid.New();
var temp = parseFloat($(".tboProductCount").val());
//need the span to workaround for chrome
var szHTML = "<tr valign=\"top\" id=\"productRow\"><td class=\"productIdCol\"><input type=\"hidden\" id=productRegsID" + temp + "\" name=\"productRegs[" + temp + "].productId\" value=\"" + productId + "\"/>"
+ "<span id=\"spanProdID" + temp + "\" name=\"spanProdID" + temp + "\" >" + productId + "</span>"
+ "</td>"
//+ "<td><input type=\"text\" id=\"productRegName\" name=\"productRegs[" + temp + "].productName\" value=\"" + productName + "\" class=\"productRegName\" size=\"50\" readonly=\"readonly\"/></td>"
+ "<td><span id=\"productRegName\" name=\"productRegs[" + temp + "].productName\" class=\"productRegName\">"+ productName + "<\span></td>"
+ "<td id=\"" + guid + "\" class=\"productrowguid\" \>"
+ "<input type=\"text\" size=\"20\" id=\"productSerialNo" + temp + "\" name=\"productRegs[" + temp + "].serialNo\" value=\"" + "\" class=\"productSerialNo\" maxlength=\"18\" />"
+ "<a class=\"fancybox\" id=\"btnImgSerialNo" + temp + "\" href=\"#divSerialNo" + temp + "\"><img class=\"btnImgSerialNo\" src=\"Images/landing_14.gif\" /></a>"
+ "<span id=\"snFlag" + temp + "\" class=\"redWarning\"></span></td>"
+ "<td><input type=\"text\" id=\"productRegDate" + temp + "\" name=\"productRegs[" + temp + "].PurchaseDate\" readonly=\"readonly\" />"
+ "<span id=\"snRegDate" + temp + "\" class=\"redWarning\"></span></td>"
+ "<td align=\"center\"><img style=\"cursor:pointer\" id=\"btnImgDelete\" src=\"Images/btn_remove.gif\" onclick=\"javascript:removeProductRow('" + guid + "')\" /><div style=\"display:none;\"><div id=\"divSerialNo" + temp + "\" style=\"font-family:verdana;font-size:11px;width:600px\">" + serialnumbergeneral + "<br /><br />" + getSNImageByCategory(productId) + "</div></div></td>"
+ "</tr>";
$(".ProductRegistrationTable").append(szHTML);
$("a.fancybox").fancybox();
//initialization
$("#productRegDate" + temp).datepicker({
minDate: new Date(1996, 1 - 1, 1),
maxDate: 0
});
//sanity check
//s7test
alert('1 '+$("#spanProdID" + temp));
alert('2 '+$("#productRegsID" + temp));
} //end function addNewProductRow
Мне нужно обновить идентификатор, когда пользователь выбирает новый продукт, но добавление другого тега span рядом с ним показывает, что диапазон будет иметь новый идентификатор, а скрытый ввод будет иметь предыдущий идентификатор.
Есть ли элегантный способ обойти эту проблему?
Спасибо
2 ответа
Переехал сюда после прочтения комментария @pruts;)
мой босс нашел ответ, это было просто autocomplete="off", добавленный к атрибутам ввода, хотя vwd пометит его как ошибку:)
Я думаю, вы можете сбросить скрытые поля, как только страница загружена.
<script type="text/javascript">
$(function() {
$("input[type=hidden]").val("");
});
</script>
Этот код выполняется, когда вы нажимаете "назад".