我有以下用于客户端验证的功能:
<script type="text/javascript">
$(function () {
document.onkeydown = function () {
if (event.keyCode == 116) {
event.keyCode = 0;
event.returnValue = false;
}
}
$("#btnEnviar").click(function () {
$("#cerrarPopup").click(addHandlerCloseModal);
var msg = "";
if ($("#txtNombre").val() == "") { msg += "El nombre es un campo obligatorio <br/>"; };
if ($("#txtTelefono").val() == "" ||
!$.isNumeric($("#txtTelefono").val()) ||
$("#txtTelefono").val().length != 9) {
msg += "Introduzca un teléfono válido de 9 posiciones. <br/>";
};
if (msg != "") {
doModal(msg);
return false;
}
if (!$('#chkClausulas').prop("checked")) {
msg = "No ha aceptado las condiciones legales";
doModal(msg);
return false;
}
//$("#span1").html('');
return true;
});
});
function doModal(obj) {
$("#spanMsg").each(function () {
$(this).html(obj);
});
$("#divModal").modal();
}
function clearForm() {
$("#rightContent input:text").val('');
$('#chkClausulas').attr("checked", false);
}
function addHandlerCloseModal() {
$.modal.close();
}
</script>
然后,在服务器端验证中,我处理请求并显示确认请求已成功的模式消息。
Dim msgScript As String = "<script type='text/javascript'>" & _
"$('#span1').html('');clearForm();doModal('#msg#'); " & _
"$('#cerrarPopup').click(function () { $.modal.close(); }); " &
"</script>"
ScriptManager.RegisterStartupScript(Me, Me.GetType, "doModal", _
msgScript.Replace("#msg#", outMsg), False)
这按预期工作。客户端获取已处理消息和 clearForm();函数清除所有输入:文本控件。
问题是当您在 browsert 或 F5 或 CTRL + F5 上按刷新按钮时,尽管表单已被清除,但表单仍会使用先前的值再次提交。
我用这个:
document.onkeydown = function () {
if (event.keyCode == 116) {
event.keyCode = 0;
event.returnValue = false;
}
}
避免按 F5 键,但它并非一直有效。
我怎样才能避免重新提交表格。为什么在清除控件时浏览器会缓存文本输入值?