除非启用JavaScript,否则请勿提交表单

时间:2010-03-09 22:07:59

标签: javascript validation forms

我有一个我用于会员注册的基本表格。我正在使用表单onsubmit事件来填充基于某些表单字段的隐藏表单字段。它工作得很好,但是如果没有启用javascript,我想阻止表单提交。这将确保隐藏字段在客户端计算机上正确填充。

我意识到在没有启用javascript的情况下支持注册可能是最好的做法,但我想使用我现有的解决方案运行

<form id='member_form' method="post" action="http://www.mysite.com/" onsubmit="build_username();" >

6 个答案:

答案 0 :(得分:8)

如果他们需要javascript来提交表单,那么甚至无法向他们展示表单。

鉴于此,我建议这样的事情

<noscript>
  You cannot register without javascript enabled.
</noscript>

<form id="registration" style="display: none">
  <!-- form stuff here -->
</form>

<script type="text/javascript">
  document.getElementById( 'registration' ).style.display = 'block';
</script>

这有点俗气和黑客,但那么需要javascript来形成一个简单的网页。

答案 1 :(得分:3)

问题是默认情况下表单是可提交的。

您无法删除表单的action属性,稍后会使用JavaScript添加它,因为浏览器会将当前页面用作action,表单仍然可以提交。

此外,删除“提交”按钮也无济于事,因为表单仍然可以使用 enter 键提交。

但是,我向你提交(双关语并不打算!)这个邪恶的想法:

<form action="#">
  ....
</form>

这使得表单最初几乎不可提交,因为提交目标是当前页面。

然后,您将使用JavaScript设置正确的action属性。

我想不出有什么理由不能在浏览器中可靠地工作,除了尝试提交它会使浏览器因为哈希#而跳转到页面顶部。

答案 2 :(得分:2)

隐藏提交按钮无效,因为如果您在input type="text"中按Enter键,浏览器将尝试提交表单。

您可能想要尝试的是通过JavaScript添加form元素(即在HTML中没有它)。

答案 3 :(得分:0)

一种方法是将隐藏字段默认为类似hunter2的内容,然后在提交表单时,让javascript将其更改为其他内容。然后你就可以知道用户是否启用了javascript。

答案 4 :(得分:-1)

为什么不默认隐藏提交按钮并用JavaScript显示?这不会阻止用户通过按Enter键提交表单,但它会修剪数字。您还可以显示带有NOSCRIPT html元素的消息,告知用户启用JavaScript。

答案 5 :(得分:-1)

只需删除任何<input type="submit"><input type="image">,然后使用触发表单提交的按钮/图片替换它们。如果在禁用JavaScript时没有触发提交的控件,您将合理地确定提交来自JavaScript。请记住,聪明的用户,破碎的浏览器和其他奇怪之处将确保无论如何都会提交损坏或无效的数据。

相关问题