繁体   English   中英

禁用JavaScript时阻止表单提交

[英]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的函数中,以确保在页面加载之前,它不会获取元素

范例http://jsfiddle.net/74555/

您始终可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM