【发布时间】:2016-04-17 13:20:43
【问题描述】:
我必须使用 JS 或 JQ 验证电子邮件地址。 现在我正在使用 JS 但无法将文本框的值作为 JS 的参数传递。我希望这在onchange中实现。 我发现解决方案只使用一个按钮来验证我不想要的。
这是 HTML 代码。
<div class="form-group">
<label class="control-label">Father's E-Mail Address</label>
<input maxlength="30" pattern=".{1,50}" onchange="validateEmail(document.getElementById('txtFatherEmail').value);" title="Input Invalid" type="text" required="required" class="form-control" placeholder="Enter Father's E-Mail Address" id="txtFatherEmail" runat="server"/>
</div>
这是我用过的JS。
function validateEmail(email) {
var emailReg = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
var valid = emailReg.test(email);
if (!valid) {
alert("False");
} else {
alert("True");
}
}
我也想知道是否有更好的方法来做到这一点。
【问题讨论】:
-
我想知道
runat="server"是否在干扰。您可以考虑将其删除以进行测试。 -
我不确定,但我不会在 onchange 上运行它,只在模糊上运行它,以提高用户界面效率...
-
@softwareplay — change 事件仅在元素失去焦点时触发,因此即使元素没有被更改也会触发它。
-
@softwareplay — 不,如果元素已更改,则当焦点丢失时会触发更改事件。输入事件在每次输入修改时触发。您似乎将标准 DOM 与 jQuery 混淆了,并将它们倒退了..
标签: javascript jquery html validation onchange