如何在Drupal中的INSERTED表单上设置输入焦点?

时间:2011-02-25 16:07:51

标签: jquery drupal jquery-tools

我有一些代码使用常规Forms API来组合一个简单的表单。我正在使用jQuery Tools包生成此表单并将其插入到叠加层中。这工作正常,但我想将输入焦点设置为窗体中的文本字段。我已经尝试过一些应该这样做的jQuery代码 - <script type='text/javascript'>$('#textfieldID').focus();</script> - 或者某种形式在表单的主题函数的末尾,但它没有被加载到页面上。我猜这是因为Drupal的某些部分正在“有用”并过滤掉脚本,但我不确定。在任何情况下,代码都没有运行 - 如果我在代码中插入一个javascript alert()语句,则没有任何反应。

那里有什么建议吗?我真的很想把重点放在这个家伙身上。谢谢!

3 个答案:

答案 0 :(得分:1)

你应该使用Drupal的api来使用drupal_add_js来包含JavaScript。在表单的主题函数中执行它是可行的方法,因为它将被调用,即使表单被缓存。

Drupal不会过滤掉脚本标签等,所以如果它们没有打印,听起来好像你在主题功能上做错了。

答案 1 :(得分:0)

您应该能够在表单主题函数中执行drupal_add_js,但我需要查看您的代码。

这对我有用:

mymodule_init() {
   if (request_uri() == 'path where your form resides') {
      drupal_add_js(arguments);
   }
}

如果您有多步骤表单,则可以执行以下操作:

mymodule_init() {
   if (preg_match('/path/', request_uri())) {
      drupal_add_js(arguments);
   }
}

您可能希望使用drupal_match_path而不是上面的preg_match,但是我没有成功地将其用于此方案。

http://api.drupal.org/api/drupal/includes--common.inc/function/drupal_add_js/6

答案 2 :(得分:0)

我宣称这是“回答” - 深入挖掘后(=键盘上的血液),现在我很清楚jQuery Tools是罪魁祸首 - 由Drupal创建的形式,肯定包含我插入的任何脚本内容(最新方案:$(document).ready(... focus ...)作为表单中的标记元素)。在完成jQT覆盖过程的某个地方,脚本消失了。主要提示:如果我禁用叠加层以使窗体出现在常规页面中,则脚本会出现,运行并正确设置焦点。

Blurg;至少我(想想我)知道发生了什么 - 即使它不起作用,我还有一个更好的问题要问。感谢所有人的帮助。