禁用javascript时阻止表单提交

时间:2014-08-06 10:12:10

标签: javascript .net asp.net-mvc client-side-validation

我有一个带有客户端验证的mvc表单。

如果javascript被禁用,我想确保用户无法提交页面,因为这样会绕过验证。 这有可能,怎么办呢?

提前致谢!

5 个答案:

答案 0 :(得分:1)

虽然可能,但这不是解决问题的好方法。客户端验证不能替代服务器端检查。您必须进行服务器端检查,因为没有人强迫用户使用您的前端。他们可以建立自己的网页,将数据提交给您的应用程序。

答案 1 :(得分:1)

编辑:与sitnarf相似

默认设置不显示:

<input type="submit" id="submitButton" value="Submit" style="display:none;"/>

注意display: none;

然后在javascript中你可以这样做:

document.getElementById("submitButton").style.display = 'inline-block';

使其再次可见(inline-block是提交按钮的正常显示类型)。

请记住将javascript代码放在您身体的底部,或者将其包含在类似于document.onload的函数中,以确保它不会获取该元素直到页面已加载

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

答案 2 :(得分:0)

你总是可以使用Javascript来提交表单,使用一个名为Submit的按钮,它不是一个提交按钮!

HTML

<input type="button" name="Submit" value="Submit" onclick="SubmitForm()">

JS

function SubmitForm()
{
    document.getElementById("myForm").submit();
}

禁用javascript后,点击该按钮将无法执行任何操作。

答案 3 :(得分:0)

默认状态必须是,该表单无法提交(不使用操作属性),例如

<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>

答案 4 :(得分:0)

在asp.net mvc中还有一个很好的功能ModelState.IsValid来检查模型验证是否满足你可以使用它,如果某种方式在浏览器中禁用javascript或以某种方式绕过客户端验证..

public ActionResult Index()
 {
     if( ModelState.IsValid )
     {}
     else
     {}
 }

总是尝试在asp.net mvc中使用ModelState.IsValid,因为客户端验证永远不可靠,也没有完整的证明方式来检查javascript是启用还是禁用...使用{{的优势1}}如果是启用还是禁用了javascript,您的表单将会提交,并且还将在控制器端检查模型的所有验证。