如何在Metro风格中进行简单的html 5验证?

时间:2012-10-04 16:45:46

标签: javascript html5 windows-8 microsoft-metro

我正在开发使用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表单输入元素是否有效。

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:1)

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

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

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