2011-06-16 161 views
0

我想应用JavaScript两次到一个简单的HTML文本。我有onfocus和autogrow(这实际上是jquery)。看来我只能得到一个或另一个工作,但从来没有一次。JavaScript不工作后,PHP包括

我的剧本有:

<?php 
include 'header.php'; 
?> 

这似乎是这个问题。在header.php和index.php(包含头文件)中,我都加载了jquery.js。当我从头文件中删除这个文件时,自动增长功能起作用,但不是我的onfocus事件(清除默认文本)。有没有一种方法可以包含另一个文件,而不会影响到彼此。我不能提供代码,因为它太长了。

这是我的onfocus代码:

<script type='text/javascript'> 
    function addEvents(id) { 
var field = document.getElementById(id); 
field.onfocus = function() { 
    if (this.value == "Answer this problem...") { 
     this.value = ""; 
    } 
}; 
field.onblur = function() { 
    if (this.value == "") { 
     this.value = "Answer this problem..."; 
    } 
}; 

} ADDEVENTS( “answerbox”);

+3

您必须发布更多代码才能提供帮助。加载jQuery两次会失败,因为它试图重新定义相同的函数。 – Devraj 2011-06-16 11:12:02

+0

我的剧本也有<?PHP的******?>,这并不表明我们的全部问题的定义,请澄清多一点... – 2011-06-16 11:13:31

+0

@devraj相信我,你通过代码不想要排序。感谢您的建议,但是标题。php和index.php每个都需要使用jquery独立。我怎么能只加载一次? – user780483 2011-06-16 11:14:21

回答

1

中有一个单独的文件的脚本,并使用PHP的include_once函数在每个页面包含。

创建一个文件jquery.php并添加以下。

<script type='text/javascript' src='jquery.js'></script> <script type="text/javascript" src="autogrow.js"></script> 

和header.php中

include_once('jquery.php'); 

和index.php文件

include_once('header.php'); 
include_once('jquery.php'); 
+0

@jagadeesan是的,我用include_once和脚本jquery.js。我应该尝试重命名jquery文件吗? – user780483 2011-06-16 11:16:34

+0

现在查看我的答案。我编辑过。 – Jagadeesan 2011-06-16 11:17:18

+0

我实际上使用下面的代码来加载自动增长和jquery(我用这种方法来加载jquery在这两个文件中) – user780483 2011-06-16 11:18:05

2

原则之一:加载jQuery的只有一次!您正在将它加载两次到同一页面。因此请将其从稍后加载的一个文件中删除。

我假设你在你的index.php做的第一件事是包括的header.php,所以从index.php中删除jQuery的负载。

+0

我将jquery.js和autogrow.js都移到了header.php中,并将它们全部从index.php中移除。我有autogrow工作,但现在,onfocus明文不会工作 – user780483 2011-06-16 11:21:39

+0

您在萤火虫或开发人员面板中看到的任何错误? – Shrinath 2011-06-16 12:56:24

1

它什么都没有做与PHP包含文件。如果你多次包含jQuery,那么jQuery就足够聪明了。

这是自动增长的插件代码,这是狡猾的。

编辑query.autogrowtextarea.js文件。将行this.onfocus = grow;更改为jQuery(this).focus(grow);

然后你的JavaScript代码,我已经改变了它使用jQuery库(主要是因为它的很多更少的代码,使之穿过旧的浏览器IE6一样兼容+)。

function addEvents(id) { 
    var field = jQuery('#' + id); 
    field.focus(function() { 
     if (this.value == "Answer this problem...") { 
      this.value = ""; 
     } 
    }); 

    field.blur(function() { 
     if (this.value == "") { 
      this.value = "Answer this problem..."; 
     } 
    }); 
} 
addEvents("answerbox"); 
</script> 

两者现在应该同时工作。

+0

onblur怎么样,我为业余爱好者道歉,但是在你的HandlerHere中该怎么办? – user780483 2011-06-16 18:43:59

+0

这是我的onfocus事件代码: – user780483 2011-06-16 18:55:04

+0

user780483 2011-06-16 18:55:15