首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改默认“请在电子邮件地址中包括一个@”?

如何更改默认“请在电子邮件地址中包括一个@”?
EN

Stack Overflow用户
提问于 2021-01-09 01:36:58
回答 4查看 1.2K关注 0票数 0

我正在尝试更改默认错误消息"setCustomValidity" 抛出的电子邮件无效.

我无法访问源代码。我的假设是,源以某种方式调用setCustomValidity;仅仅是因为错误消息的外观。这是源元素:

代码语言:javascript
运行
复制
<input type="email" value="" name="customer[email]" id="email" class="large" size="30">

I只能使用外部JavaScript/css文件注入任何更改.

我可以想出两种解决方案。

解决方案1: --我正在尝试使用JS注入内联元素,这将导致类似的结果。

代码语言:javascript
运行
复制
<input type="email" value="" name="customer[email]" class="large" size="30" oninvalid="this.setCustomValidity('Please Enter valid email')" oninput="setCustomValidity('')">

我对JS很陌生,很难理解如何在外部JS文件中实现HTML。

解决方案2:调用error_message.js中的like和setCustomValidity DOM方法,如下所示:

代码语言:javascript
运行
复制
function emailValidity(){
    var myInput = document.getElementByName("customer[email]");
    myInput.oninvalid = function() { 
                (errorMessage) 
            };
    function errorMessage(){
        myInput.setCustomValidity("hey! the email isn't right");
    }
    }

但是这个文件即使在包含之后也无法覆盖默认消息!

任何帮助都是非常感谢的。提前谢谢你。

EN

回答 4

Stack Overflow用户

发布于 2021-01-09 01:53:09

此外,您必须在同一个元素上调用reportValidity方法,否则不会发生任何事情。

HTMLObjectElement.setCustomValidity

代码语言:javascript
运行
复制
function validate(input) {

  var validityState_object = input.validity;

  console.log(validityState_object)

  if (validityState_object.typeMismatch) {
    input.setCustomValidity('Thats not an email!');
    input.reportValidity();
  } else {
    input.setCustomValidity('');
    input.reportValidity();
  }
}

document.querySelector('#email').addEventListener('blur', e =>
  validate(e.target)
)
代码语言:javascript
运行
复制
<input type="email" value="" id="email">

票数 2
EN

Stack Overflow用户

发布于 2021-01-09 01:49:00

只需以相同的方式设置inputinvalid事件侦听器即可。

代码语言:javascript
运行
复制
const input = document.querySelector('input');
input.oninput = () => input.setCustomValidity('');
input.oninvalid = () => input.setCustomValidity('Please Enter valid email');
代码语言:javascript
运行
复制
<form>
<input type="email" value="" name="customer[email]" class="large" size="30">
</form>

票数 0
EN

Stack Overflow用户

发布于 2021-01-09 01:55:50

您的代码不起作用,因为它不是在表单中。表单需要一个submit按钮来检查输入,并在必要时显示错误消息,所以我添加了这个按钮。

另外,当它应该是getElementByName的时候,就有了getElementsByName,后面的[0]索引可以选择这个元素。

此外,每次用户尝试提交时,您都试图设置有效性,而用户只需要设置一次。

试试这个:

代码语言:javascript
运行
复制
var myInput = document.getElementsByName("customer[email]")[0];
myInput.oninvalid = function() {
  myInput.setCustomValidity("Hey! the email isn't right")
};
代码语言:javascript
运行
复制
<form>
  <input type="email" name="customer[email]" id="email" class="large" size="30">
  <input type="submit" onsubmit="emailValidity()">
</form>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65638507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档