0

我正在使用 Html 5 和 Javascript 开发 Windows 8 Metro 风格应用程序

我的问题很简单,如何编写带有验证的简单表单?

<form id="loginForm">
        E-Mail:
        <input id="login-email" type="email" name="Username" oninvalid="this.setCustomValidity('Enter email pls')" 
    maxlength="40" required pattern="^.{2,}@.{2,}$"/>

        Password:
        <input id="login-password" type="password" name="Password" maxlength="25" required pattern=".{6,10}"/>

    <button name="login" type="submit" class="go-login" id="btnlogin" value="LOGIN">LOGIN</button></form>

这是我的 html 5 表单。但问题是地铁风格的事件监听器......

document.getElementById("btnlogin").addEventListener('click', loginClick);

当我单击提交按钮时,EventListener 的“loginClick”函数会启动而不检查 html 5 表单输入元素是否有效。

4

2 回答 2

1

根据 w3schools,您必须在表单标签中调用 onsubmit="return function()" 。这样,它不应该在没有经过验证的情况下继续提交。

从 W3schools 获取:

<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
Email: <input type="text" name="email">
<input type="submit" value="Submit">
</form>

和所属的javascript:

function validateForm()
{
var x=document.forms["myForm"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
    {
        alert("Not a valid e-mail address");
    return false;
    }
}
于 2012-10-04T17:11:26.757 回答
1

在使用 HTML5/JS Windows Store Application (WSA) 时遇到了同样的问题。期望是在客户端上通知用户并且“提交”中的代码不会运行。这是我们在浏览器中运行的基于 Web 的 HTML5 应用程序所看到的。但是,无论验证状态如何,当单击按钮时 WSA 应用程序都会运行提交代码。在我的应用程序中,我检查了 loginForm.checkValidity() 属性。当所有验证都正确时,这是正确的。

if (loginForm.checkValidity())
{
  //...submit logic...
}

我同意,鉴于我们对网络世界的期望,这项检查是一个额外的步骤。这仍然是 WSA 平台的第 1 版,我预计此功能将在未来的更新/发布中演变成产品。

于 2012-12-28T13:49:53.853 回答