2012-12-18 32 views
0

我在JSF中使用复合组件,并遇到了我需要使用的JavaScript的麻烦。我有以下脚本:jQuery初始化与表单ID

$(document).ready(function() { 
    $("#form_test\\:text_auto").bind("keyup",function() { 
     setTimeout(function() { 
     send_ajax(); 
     }, 500); 
    }); 
}); 

为了能够在不同的地方使用此功能,使用不同的表单标识符而不是prependId = false;我需要以某种方式初始化脚本与表单id(在这个例子中“form_test”)。

使用jQuery绑定类似“keyup”的事件效果很好,所以如果可能的话我想继续使用这种机制。是否有可能以某种方式动态设置表单ID?

回答

0

什么是这样的:

$(document).ready(function() { 
    bindKeyupOnForm("form_test"); 
}); 

function bindKeyupOnForm(formId) { 
    $("#" + formId + "\\:text_auto").bind("keyup",function() { 
     setTimeout(function() { 
      send_ajax(); 
     }, 500); 
    }); 
} 
+0

感谢sp00m。读了一下jQuery并测试了不同的解决方案后,我相信你是最好的。 – nivis

0

你可以尝试这样的:

$(document).ready(function() { 
    $("form\\:text_auto").bind("keyup",function() { // this will apply for each form tag 
    // if you need something from the form use $(this) variable 
    setTimeout(function() { 
     send_ajax(); 
    }, 500); 
}); 
+0

恐怕我需要具有特定的表单ID,因为我还需要将其用于其他组件。 – nivis

+0

您可以使用表单ID'$(this).attr('id')':) – Naryl

0

谢谢您的回答。然而,我发现了另一种通过直接在脚本中设置表单id#(cc.attrs.formId)来解决它的方法。