【发布时间】:2017-06-02 04:42:39
【问题描述】:
基本上我正在研究一个简单的功能。但是当我尝试 addClass 到任何 HTML 元素时,它卡住了它不起作用。
我有两个 HTML 元素
- DocType 下拉菜单
- DocNumber 的文本框。
根据 DocType 中的选定值,我需要更改 DocNumber 的类,该类将处理 DocNumber 文本框的验证部分。
这是我的脚本代码。
$(document).ready(function () {
$(".number").keydown(function (e) {
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13]) !== -1 ||
(e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) ||
(e.keyCode >= 35 && e.keyCode <= 40)) {
return;
}
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
});
});
$('#ddlDoctype').on('change', function () {
var validateCriteria = $(this).find("option:selected").val();
if (validateCriteria == "A") {
$("#txtDocNumber").addClass("minSize[8]");
$("#txtDocNumber").addClass("number");
$("#txtDocNumber").removeClass("minSize[12]");
} else if (validateCriteria == "E") {
$("#txtDocNumber").addClass("minSize[12]");
$("#txtDocNumber").removeClass("minSize[8]");
$("#txtDocNumber").addClass("number");
} else if (validateCriteria == "C") {
$("#txtDocNumber").removeClass("number");
} else {
$("#txtDocNumber").removeClass("number");
}
});
这里要注意的一件好事是,当我将minSize[8] 添加到文本框时,它会被分配,但数字类没有被分配给文本框。当我在手表中添加该部分时,我得到一个结果,number 类正在被分配,但它不起作用并且允许用户也输入字母。
即使尝试了很多方法来解决这个问题,我也无法摆脱它。如果有任何帮助,我将不胜感激。
【问题讨论】:
-
你能分享HTML代码,或者工作sn-p
-
这不是答案,而是您应该做的事情。您应该将查询选择器存储到一个变量中并使用它,而不是多次调用查询选择器。
var txtDoc = $("#txtDocNumber"),然后是txtDoc.addClass('foo')。 -
@SuperUser Here is JsFiddle
-
@borislemke 谢谢你的建议,但它不会改变任何东西。
-
@Chirag 是的,我知道。我明确表示这不是答案。之所以应该这样做是因为多次调用查询选择器的成本很高。
标签: javascript jquery html css validation