在blur函数中停止jQuery blur事件

在blur函数中停止jQuery blur事件,jquery,events,focus,blur,setting,Jquery,Events,Focus,Blur,Setting,我有一个文本框,我正在使用模糊事件用正则表达式验证文本。如果失败,我希望文本框保持焦点。我知道在常规javascript中,您可以说returnfunctionname;在实际html控件中的onblur事件中。在$document.ready函数中绑定模糊事件时,是否有类似的方法。或者干脆把重点放在这上面。谢谢你的帮助 $(document).ready(function() {"); $('input:text.sqlValidation').blur(function() {");

我有一个文本框,我正在使用模糊事件用正则表达式验证文本。如果失败,我希望文本框保持焦点。我知道在常规javascript中,您可以说returnfunctionname;在实际html控件中的onblur事件中。在$document.ready函数中绑定模糊事件时,是否有类似的方法。或者干脆把重点放在这上面。谢谢你的帮助

$(document).ready(function() {");
    $('input:text.sqlValidation').blur(function() {");
        var sqlInjectionRegX2 = /...Regex.../;
        var value = this.value;
        if (sqlInjectionRegX2.test(value)) {
            alert('The text you have entered may contain malicious code and can not be submitted.');
            this.value = '';
            return false;
        }
        else return true;
    });
});
难道这不只是为了设定吗

$(this).focus();

在模糊函数内部的某个地方?

在Javascript中使用正则表达式来防止SQL注入是所有或至少是最邪恶的根源。不要这样做!!!相反,在服务器端代码中使用参数。如果你不知道怎么做,问我们。如果您试图以这种方式阻止SQL注入,那么它将不起作用,并且很容易丢失数据,甚至更糟。你的敌人所需要做的就是禁用Javascript或创建自己的HTTP请求,你的过滤器将毫无用处。此外,我认为不可能用一个正则表达式完全阻止SQL注入


要回答此问题,请尝试在处理程序中写入return false或event.preventDefault。然而,它不会完美地工作;在Javascript中不可能像这样完全控制焦点。

您可以阻止默认行为并停止事件传播,然后在处理程序中执行此操作。任何事件操作都应该在任何事件处理代码之前完成。

我认为,防止SQL注入的最佳方法是不重写旧代码以使用参数,现在已关闭的旧代码是将所有引号和反斜杠加倍,并将“替换为”和“替换为\\”


请注意,我不是SQL语法方面的专家,所以我不能保证这是不可穿透的。

我必须处理类似的事情-一个javascript模糊处理程序在一种无限循环中触发自身

解决办法是:

var inBlur = false;
jQuery('#the_input_element').blur(function(){
    if (!inBlur) {
        inBlur = true;
        jQuery('#some_other_input_element').focus();
        inBlur = false;
        }
    });

我知道这并没有回答确切的问题,但它解决了在blur函数中停止jQuery blur事件的主题,因此它可能对某些人有用

我试过$this.focus;没有成功。我正在使用FF3,你知道它在FF3中是否有效吗?我刚刚在IE中试用过,效果非常好。显然这是FF3的问题。有人知道附近的工作吗?我想我已经读过一些关于设置超时的内容。我同意,但是您可以同时进行客户端和服务器端预防,尽管我不知道为什么您希望为尝试执行SQL注入的用户改善用户体验。我实际上是在使用正则表达式检查SQL注入。但是我创建的表达式检查实际的sql语句,即a';从用户中选择*;或一个';删除表用户;到目前为止,我的测试表明它工作正常。但对于一个开发人员来说,在自己的代码中找出错误就像一个家长说他们有一个丑陋的孩子因此,如果有人想尝试,我会加入我的表达,如果他们发现了,请告诉我。谢谢你的帮助。@tvanfosson:在服务器上这样做同样是邪恶的。没有任何正则表达式可以完美地阻止SQL注入,而且进行SQL注入是有正当理由的,例如,一个名叫Harry O'NeillAnd的人,我实际上在做客户端和服务器端验证。不幸的是,这个表达太长了,无法在这里发布。因此,我将添加一个新的问题,询问是否有人愿意测试该表达式并让我知道结果。@Josh H.你怎么能让不懂计算机科学的用户也尝试SQL注入攻击?我似乎很喜欢计算机科学:Pillvm,谢谢你的链接。调用事件方法stopPropagation对于所需的功能非常有效。现在决定正则表达式是否适合这种类型的验证。再次感谢。