这里有另一个 StackOverflow 帖子,这是我遇到的确切问题。但是只有一个答案,而且没有那么有帮助。
所以我重新发布,希望有人现在已经找到解决这个问题的方法。
我有一个带有可选电话号码字段的表单,其中包含 jquery maskedInput 插件和应用到它的 jquery 验证器插件。
在没有特殊设置的情况下,每次我将电话号码字段设置为空(这是可选的)后,每次我从电话号码字段中跳出时,验证器都会返回一个错误,说“输入有效的电话号码”。但该字段不是必需的。
那么,基于这里的这篇文章,我尝试将以下代码添加到验证器的 onfocusout 事件中。
onfocusout: function (element)
{
if (!this.checkable(element) && (element.name in this.submitted || !this.optional(element)))
{
var currentObj = this;
var currentElement = element;
var delay = function () { currentObj.element(currentElement); };
setTimeout(delay, 0);
}
}
起初,这似乎解决了它。如果我输入有效的电话号码,则没有错误。我没有输入电话号码,没有错误。但是,如果我输入了一个无效的电话号码(例如,只输入 9 个字符),那么当我跳出电话号码框时,我输入的号码会被删除,并且不会显示错误。
这个问题有解决方案吗?
************更新************** 经过进一步测试,我已经确认这完全是 maskedinput 的问题。如果我从电话号码字段中完全删除验证,然后在电话号码文本框中输入部分电话号码,然后从中跳出,则会发生相同的行为(删除文本框中部分输入的号码)。更多谷歌搜索表明这是 jquery.maskedinput 的一个已知问题,但我找不到任何解决方案。
所以我的问题仍然存在..这个问题有解决方案吗?