2012-05-09 103 views
0

我使用Smarty模板創建一個調查表單,在這個表單中,我想用一個特定問題的單選按鈕附加一個事件,以便在點擊任何一個單選按鈕時彈出消息。 所以我想添加一個點擊/更改事件監聽器,但不知道如何使用php。由於我不知道單選按鈕ID(它們是在飛行中生成的),因此我不確定是否可以在此處使用Javascript。 任何解決方案/建議?是否可以使用PHP添加事件偵聽器?

谷歌搜索返回所有類型的答案,爲Android和JavaScript添加事件監聽器是沒有用的!

+1

爲什麼不能通過PHP生成部分JavaScript服務器端? – 2012-05-09 22:33:44

+0

如果您不知道身份證,您將如何找到單選按鈕? – ilanco

+0

我知道這個問題(當我從數據庫中獲取它)單選按鈕將被添加彈出...在Smarty中,使用模板處理顯示,該模板是代碼創建單選按鈕的ID的位置。儘管我可以嘗試使用php內部的代碼生成邏輯。 傑克的建議聽起來像一個可能的選擇,搜索更多關於 – Ani

回答

3

只需在單選按鈕中添加一個類,然後使用JavaScript/JQuery,就可以根據需要向輸入添加事件偵聽器。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript" src="myjsfile.js"></script> 
<input type="radio" class="clickyradio" /> 
<input type="radio" class="clickyradio" /> 
<input type="radio" class="clickyradio" /> 

現在在文件中myjsfile.js

$(document).ready(function() { 
    $('.clickyradio').click(function() { 
     // whatever you want to happen when it gets clicked 
     // "this" keyword will refer to the input element that got clicked 

    }); 
}); 

如果你需要點擊的東西傳達給服務器,就把單擊事件處理程序內調用Ajax。

+0

thnx代碼!自從我使用現有的系統構建...時,我遇到了這個問題...做了一些狩獵和醜陋的黑客來整合這個想法......並且它在那裏!根據需要工作:) – Ani

0

PHP無法偵聽單選按鈕,因爲所有代碼都在服務器端完成,而單選按鈕將在客戶端單擊。你幾乎肯定會使用JavaScript。如果你對JS不太舒服,我會推薦檢查jQuery。這是非常用戶友好,並快速學習恕我直言。有了這個,你可以聽點擊raido按鈕,然後通過AJAX將信息傳回PHP腳本。我會給你一個更好的例子,但不知道你的代碼很難說明它。

+0

我與JS合作過,所以這不是問題。我沒有意識到我可以在PHP中創建JS,正如Jack在上面評論中所建議的那樣,現在正在尋找如何做到這一點。我認爲這會解決我的問題。如果你有一個代碼來說明這一點,這將是非常有幫助的。謝謝! – Ani

2

你會得到一個php事件監聽器最接近的事情是在javascript事件觸發後,通過ajax調用一些特定的php功能。該請求在技術上連接到客戶端的事件鏈(回調)。

但php不這樣做,因爲它不是客戶端。

-1

你可以做到這一點,你只是想用php來編寫你的javascript。你可以通過以下兩種方式之一來完成這一操作,方法是將其寫入文件中,或者將腳本指向php文件。

如果你選擇後者,this site

討論如何設置文件。如果您在文檔中執行此操作,您只需執行以下操作:

<?php 

    echo "<script>"; 

    if($radio_button == 'blah'){ 
     echo "document.getElementById('$radio_button')";//bind your event here 
    } 
    echo "</script>"; 

有意義嗎?在javascript命令中調用php文件可能更加整潔,但兩種方式都可以工作。

相關問題