在表单标记(HTML,JavaScript)</noscript>中插入<noscript>或类似内容

时间:2015-01-12 07:14:37

标签: javascript php html forms noscript

我有以下表格:

<form id="signup" onsubmit="return false;">
  ... form content...
  <input class="button" type="submit" />
</form>

单击按钮后,将调用JavaScript函数signup()。此函数使用AJAX调用来验证表单(与当前数据库值比较),然后通过PHP函数提交表单。

我的问题是:如果用户在浏览器中禁用了JavaScript,是否可以修改<form>标记以包含操作和方法?

由于HTML5允许在正文中使用<noscript>标记,因此我想我会尝试以下内容:

<form id="signup" <noscript>action="..." method="post"</noscript>>

但这不起作用。

如果用户启用了JS,我希望AJAX调用能够处理所有内容 - 它可以提供非常干净的用户体验。但是,我需要它仍然适用于那些已经禁用其JS的人。

提前谢谢。

2 个答案:

答案 0 :(得分:5)

你以错误的方式看待它。您始终希望在表单中包含actionmethod属性。

<form id="signup" action="/path/to/signup" method="post">

然后将函数绑定到submit事件,并使用.preventDefault();阻止表单提交(我假设jQuery在此使用)

$('#signup').on('submit', function(e) {
    e.preventDefault();

    // submit data via ajax here
});

这样做要好得多,因为您不必再​​在javascript中设置登录网址了。你只需从表格中获取它。

$.ajax({
  type: "POST",
  url: $('#signup').attr('action'),
  data: $('#signup').serialize()
})
  .done(function( msg ) {
    // logged in (or not)
  });

答案 1 :(得分:0)

试试这个例子

<form action="calcSquare.php">
<p>
<label for=x>Number</label>:
<input id="x" name="x" type="number">
</p>
<script>
var x = document.getElementById('x');
var output = document.createElement('p');
output.textContent = 'Type a number; it will be squared right then!';
x.form.appendChild(output);
x.form.onsubmit = function () { return false; }
x.oninput = function () {
  var v = x.valueAsNumber;
  output.textContent = v + ' squared is ' + v * v;
};
</script>
<noscript>
<input type=submit value="Calculate Square">
</noscript>
</form>