Jquery - 如何找到当前光标位置

时间:2010-02-19 21:57:15

标签: javascript jquery cursor

我在页面中有五个表单。我还使用jquery验证插件验证了我的验证。有一个奇怪的小案例,我想覆盖 - 其中服务器没有返回任何结果(对于任何表格),我需要显示相同的jquery验证。我能够做到这一点:

$("#form1").validate().element( ".myid" );             

现在我坚持为所有五种形式(分别为五种形式 - 五种形式)实施这一点。

一种方式是传统的if-else方式

var re5digit=/^\d{5}$;
if (document.myform.myid.value.search(re5digit)==-1){
alert("1");
} 
(if (document.myform.myid2.value.search(re5digit)==-1){
alert("2");
}
...

OR 问你一个jquery hack,它可以找到我当前的光标位置,我可以调用验证吗? 建议?

2 个答案:

答案 0 :(得分:1)

我不确定我是否完全了解您的页面布局和验证是如何设置的,但您可以存储最后一个具有焦点元素的表单:

var lastFocusedForm;
$('input').focus(function() {
  lastFocusedForm = $(this).parents('form');
});

// and then when you need to validate...
lastFocusedForm.validate().element( ".myid" );

答案 1 :(得分:0)

我认为您需要使用一种不同的方法。每个验证请求都应属于确切的形式。使用您的方式,例如,第一个表单的验证消息将以第二个形式显示时,很容易创建情境。为了避免此类错误,您应该为表单分配唯一ID,并在ajax提交函数中使用javascript闭包(http://odetocode.com/Blogs/scott/archive/2007/07/10/closure-on-javascript-closures.aspxhttp://www.jibbering.com/faq/faq_notes/closures.html)。

$(document).ready(function(){ 
    var form = $("#ajax-form");
    form.submit(function(){ 
        $.post( 
            "/controller/path", 
            form.serialize(), 
            function(receivedData){ 
                alert(receivedData); 
                form.whateveryouwant(); // do whatever you want with your form
           } 
       ); 
   }); 
});