[英]Prevent form submit when the javascript is disabled
我有一个带有客户端验证的MVC表单。
如果JavaScript被禁用,我想确保用户无法提交页面,因为那样一来,验证将被绕过。 这可能吗,怎么办?
提前致谢!
尽管可能,但这不是解决问题的好方法。 客户端验证不能替代服务器端检查。 无论如何,您都必须进行服务器端检查,因为没有人会强迫用户使用您的前端。 他们可以建立自己的网页来向您的应用程序提交数据。
编辑:类似于sitnarf
使其默认不显示:
<input type="submit" id="submitButton" value="Submit" style="display:none;"/>
注意display: none;
然后,您可以在javascript中执行以下操作:
document.getElementById("submitButton").style.display = 'inline-block';
这使得它再次可见( inline-block
是提交按钮的常规显示类型)。
请记住,将javascript代码放在body标签的底部,或将其包装在类似于document.onload
的函数中,以确保在页面加载之前,它不会获取元素
您始终可以使用Javascript提交表单,方法是使用一个名为Submit的按钮,这不是一个Submit按钮!
的HTML
<input type="button" name="Submit" value="Submit" onclick="SubmitForm()">
JS
function SubmitForm()
{
document.getElementById("myForm").submit();
}
在禁用javascript的情况下,单击按钮不会执行任何操作。
默认状态必须是,该表单不能提交(不要使用action属性),例如
<div class='error'>Turn your javascript to active form</div>
<form>
...
Field: <input type="text" name="name">
<input type="submit" style="display: none">
</form>
并使用javascript,在后面附加标签以隐藏消息并显示提交按钮:
<script>
$(".error").hide();
$("submit").show();
$("form").attr("action", "someurl.php");
</script>
在asp.net mvc中,还有一个很好的功能ModelState.IsValid
用于检查模型验证是否满足,如果在浏览器中禁用了javascript或绕过了客户端验证,则可以使用该功能。
public ActionResult Index()
{
if( ModelState.IsValid )
{}
else
{}
}
始终尝试在asp.net mvc中使用ModelState.IsValid
,因为客户端验证从不可靠,并且也没有完整的证明方法来检查是否启用了javascript。使用ModelState.IsValid
优点在于,是否启用了javascript或禁用,您的表单将提交,并且还将在控制器端检查所有对模型的验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.