【发布时间】:2020-11-14 21:33:30
【问题描述】:
我从here找到了这段代码:
$(document).ready(function() {
var errorMessage = "Please match the specified format.";
$(this).find("textarea").on("input change propertychange", function() {
var pattern = $(this).attr("pattern");
if (typeof pattern !== typeof undefined && pattern !== false) {
var patternRegex = new RegExp("^" + pattern.replace(/^\^|\$$/g, '') + "$", "g");
hasError = !$(this).val().match(patternRegex);
if (typeof this.setCustomValidity === "function") {
this.setCustomValidity(hasError ? errorMessage : "");
} else {
$(this).toggleClass("error", !!hasError);
$(this).toggleClass("ok", !hasError);
if (hasError) {
$(this).attr("title", errorMessage);
} else {
$(this).removeAttr("title");
}
}
}
});
$("#reset").click(function() {
$("#form1").reset();
if ($('[name ="textA5"]').hasClass("error")) {
$("#form1").toggleClass("error");
}
});
});
.error {
background-color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form name="form1" id="form1">
<textarea name="textA5" rows="8" cols="80" wrap="off" pattern="^[A-Za-z0-9-_]{1,}$"></textarea>
<span class="errMSG">You have an error. Check format.</span>
<input class="buttons" type="reset" name="Reset" id="reset" value="Reset" />
<input class="buttons" type="submit" value="Save Configuration" />
</form>
我有两个无法解决的问题。
- 我不知道如何使 textarea 的背景在出错时变为红色。我尝试以各种方式将 JQuery 的 .addClass 和 .css 添加到代码中,但我无法让它工作。我还想切换文本区域框下方错误消息的可见性。
- 我有一个表单的重置按钮,它可以工作,但是重置后它不会清除错误状态。我假设重置后必须重新验证表单。如何让重置按钮重置表单并在表单重置后重新验证?
【问题讨论】:
-
在 CSS 设置类
.error { background-color: red }或做其他讨厌的事情...(即.error)。重置按钮:如果textarea包含.error则toggleClass("error") -
@Rene van der Lende - 我在 OP 中编辑了代码,但仍然无法正常工作。
-
新代码错误:
$("#form1")[0].reset();=> 'reset' 不是函数。不过,textarea有一个红色边框。 -
请发布一些被认为不适合测试的文本.....
-
若要验证失败,请输入任何特殊字符(例如 =、*、%)
标签: jquery css validation