2012-05-09 56 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文件可能更加整洁,但两种方式都可以工作。

相关问题