Wie Google Chrome von Cachen meine Eingaben, besonders ausgeblendete wenn Benutzer klicken Sie zurück zu verhindern?
-
26-09-2019 - |
Frage
Ich habe eine asp.net MVC-app, die haben ziemlich viele versteckte Eingänge Werte zu halten, um die Formatierung und ihre Namen, so dass ich das Modell Bindung später verwenden können, wenn ich das Formular aus.
i stolpere in einen seltsamen Fehler mit Chrom, die ich nicht mit IE oder Firefox, wenn der Benutzer das Formular abschickt, und klicken Sie auf der Schaltfläche Zurück, ich finde, dass Chrom meine versteckten Eingabewerte als auch halten wird.
der ganze Brocken über Javascript erzeugt wird daher glaube ich, Chrom dies Caching.
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
Ich brauche die ID aufgefrischt werden, wenn der Benutzer ein neues Produkt wählen, sondern setzt eine anderen Span-Tag daneben zeigt, dass die Spanne die neue ID haben wird der versteckte Eingang wird noch die vorherige ID hat.
ist es eine elegante Möglichkeit, dieses Problem zu umgehen?
Dank
Lösung
Verschoben hier nach @pruts Kommentar zu lesen;)
mein Chef fand die Antwort, es war ein einfaches Autocomplete = „off“ an die Eingangs Attribute hinzugefügt, obwohl vwd Willen Flagge als Fehler:)
Andere Tipps
Ich denke, man kann die versteckten Felder zurückgesetzt, sobald die Seite geladen wird.
<script type="text/javascript">
$(function() {
$("input[type=hidden]").val("");
});
</script>
Dieser Code wird ausgeführt, wenn Sie klicken Sie auf "zurück".