2011-03-04 107 views
-1

我知道它可以在PHP中調用javascript函數,它已經工作,但是當我嘗試調用checkSecondValue時,什麼也沒有發生。我已經在調用函數時加入了我的變體。在PHP中調用JS函數

編輯:如果我嘗試在底部調用它而不激活select中的onChange事件,它就不能工作。

<!--<html> 
<head> 
    <script type="text/javascript" src="validation.js"></script> 
    </head> 
</html> 

<script src="validation.js" type="text/javascript"></script> 
--> 
<?php 
    //retrieve all the bris for the drop down 
include '../../inc/database.php'; 
$res = BbqcDatabase::getInstance()->doQuery('SELECT * FROM T_TOURNOI_BRIS'); 
$str = "<select name='ddlBrisSelected' id='ddlBrisSelected' onChange='checkSecondValue()'>"; 

$bris = ($_GET['bris']); 

if($bris == 4) 
{ 
    $bris2 = "autre"; 
} 

if($bris == null) 
{ 
    $str .= "<option value='' selected></option>"; 
} 
else 
{ 
    $str .= "<option value=''></option>"; 
} 

$i = 0; 
while($data = mysql_fetch_assoc($res)) 
{ 
    if($data['F_BRISID'] == $bris) 
    { 
     $str .= "<option value='" . $data['F_BRISID'] . "' selected '>" . $data['F_BRISTITLE'] . "</option>"; 
    } 
    else 
    { 
     $str .= "<option value='" . $data['F_BRISID'] . "'>" . $data['F_BRISTITLE'] . "</option>"; 
    } 
} 

if($bris2 == "autre") 
{ 
    $str .= "<option value='autre' selected>Autre</option>"; 
} 
else 
{ 
    $str .= "<option value='autre'>Autre</option>"; 
} 
$str .= "</select>"; 

echo $str; 

if(is_numeric($bris)) 
{ 
    /* echo "<SCRIPT language=\"JavaScript\" SRC=\"validation.js\">checkSecondValue();</SCRIPT>"; */ 
    /* echo "<script> checkSecondValue();</script>"; */ 
    /* echo "<script type=\"text/javascript\">checkSecondValue();</script>"; */ 
    /* echo '<script type="text/javascript">', 'checkSecondValue();', '</script>'; */ 
    /* echo "<SCRIPT LANGUAGE='javascript'>checkSecondValue();</SCRIPT>"; */ 
} 

?> 
+0

'checkSecondValue()'定義在哪裏? – mellamokb 2011-03-04 18:34:46

+2

這不可能在PHP中調用JS函數。在學習如何做之前,先了解你實際嘗試做什麼。 – Jon 2011-03-04 18:35:27

+0

在一個單獨的js文件中調用validation.js – 2011-03-04 18:35:55

回答

3

您不能從PHP調用客戶端JavaScript函數,但可以使客戶端調用特定(客戶端)事件上的函數的echo代碼。

只要看看您從PHP獲得的生成的HTML,然後從那裏看看爲什麼checkSecondValue()不會在onChange事件上執行。

+0

我的不好,onChange事件起作用,它是不起作用的底部部分 – 2011-03-04 18:50:10

+0

底部是什麼部分?如果你的意思是你在代碼末尾註釋掉的東西,就像我說的,你不能從PHP調用客戶端的JavaScript函數。就像Mellanmokb在另一個答案中所說的,在整個頁面加載之前,不要對函數進行真正的調用。 – 2011-03-04 19:11:50

0

至少,你希望你的函數調用只有在頁面被加載後纔會發生。這可以通過嵌入在body標籤功能中onload來完成:

<body onload="checkSecondValue();"> 

函數調用是要執行的客戶端,整個頁面已經被PHP處理後。在頁面處理期間,您無法在JavaScript和PHP之間來回交流。

+0

只是試過了,功能沒有被調用。 – 2011-03-04 18:46:19