我写了以下代码。
$("input,textarea").blur(function () {
debugger;
var val = $.trim($(this).val());
if (val != "") {
if (containsHTMLTags(val) == true) {
$(this).css({ "border": "1px solid red" });
$(this).focus();
}
}
});
function containsHTMLTags(str) {
if (str.match(/([\<])([^\>]{1,})*([\>])/i) == null)
return false;
else
return true;
}
代码使用html输入的正则表达式检查所有输入和textarea控件的值。如果正则表达式失败我想专注于控制,我不知道为什么 $(this).focus(); 这行代码不起作用。
请帮忙! 感谢
答案 0 :(得分:0)
您需要将正则表达式更改为:
str.match(/([<|>])/gi) == null
$("input,textarea").blur(function () {
var val = $.trim($(this).val());
if (val != "") {
if (containsHTMLTags(val) == true) {
$(this).css({
"border": "1px solid red"
});
$(this).focus();
}
}
});
function containsHTMLTags(str) {
console.log(str.match(/([<|>])/gi))
if (str.match(/([<|>])/gi) == null)
return false;
else
return true;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea></textarea>
<input/>
答案 1 :(得分:0)
一旦触发了模糊事件,就会触发下一个元素的焦点事件,您可以在该处理程序中运行您的代码
你可以通过一个小技巧来实现 -
$("input,textarea").blur(function () {
var val = $.trim($(this).val());
console.log(val);
if (val != "") {
if (containsHTMLTags(val) == true) {
$(this).css({
"border": "1px solid red"
});
var r=$(this);
r.next().on('focus',function(){ //bind a event to get focus again
r.focus();
r.next().off('focus'); //unbind it
});
}
}
});
答案 2 :(得分:-1)
最后花了2个小时解决了这个问题。 Web表单的所有控件都是从数据库生成的,因此每个控件的id基本上都是表的主键。 Jquery认识id应该以字符开头。请在网上阅读。
这是我正在使用的工作代码
$("input,textarea").blur(function () {
var val = $.trim($(this).val());
//console.log(val);
if (val != "") {
if (containsHTMLTags(val) == true) {
debugger;
$(this).css({
"border": "1px solid red"
});
var s = $(this).attr("id");
document.getElementById(s).focus();
}
}
});
function containsHTMLTags(str) {
if (str.match(/([\<])([^\>]{1,})*([\>])/i) == null)
return false;
else
return true;
}
非常感谢帮助我的所有成员。
由于