Checkbox只要被打钩就出发,(onclick,onchange都是要点击才能触发)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Checkbox只要被打钩就出发,(onclick,onchange都是要点击才能触发)相关的知识,希望对你有一定的参考价值。

很奇怪的是,通过其他方式是Checkbox打钩,可是却不触发onchange事件?

参考技术A onchange事件必须你focus在当前对象上。如果要通过值变化触发javascript也是有方法的。自己查吧。记得IE和chrome中方法是不同的。追问

搞了好久,还是不行,可以帮我一下吗

追答

查了一下 IE中可以使用 onpropertychange="alert(this.value)"来监控数据变化。

追问

十分感谢,分已经给人家了,不好意思啊,但我已经采用另一种特别笨,特别麻烦的方式给解决了

参考技术B 我从夏天深夜等到了秋天的黎明。人生一世 草木一秋 望往后的日子不太苦涩 参考技术C 你用的是IE浏览器吧!追问

不是,谷歌

追答

你把兼容性看看吧,你试试用火狐是没问题的

追问

试过了,火狐是没有问题的,应该不是浏览器的问题

追答

我以前好像也遇到过类似的问题,忘了怎么解决的,你自己在百度吧,百度上应该能找到

参考技术D 没懂你想要实现什么。。。。我只是来混财富值的追问

你赢了

追答

仔细一样还是不理解你想搞什么,打钩是一种状态,触发需要的是一个动作,如果打钩就触发那不是会无限执行吗

追问



我也不知道怎么说, 在JS里用document.getElementById("otherRoute").checked=true;
使checkbox选中,他就不会触发上面的onchange事件了

追答

哦,好像明白你的意思。你是说如果用js改变checkbox的值,onchange不会被触发吧。应该不会触发,事件一般是监听用户的动作,用js改不属于用户动作。 。。另:document.getElementById("otherRoute").checked=true;
你都在js改变checkbox的值了,在这句的后面就执行onchange方法的内容不就行了

本回答被提问者采纳

使用显示为 onclick/checkbox id 的 MySQL id

【中文标题】使用显示为 onclick/checkbox id 的 MySQL id【英文标题】:using the MySQL id that is shown as a onclick/checkbox id 【发布时间】:2015-01-10 07:38:06 【问题描述】:

我正在开发一个需要显示数据库内容的网页,并让您单击它们以显示与该 ID 相关的数据库中的更多信息,甚至将内容旁边的复选框链接到相同的数据库 ID,这样我就可以如果需要,请删除帖子,到目前为止,我用于显示内容的代码运行良好,

但我只是不知道如何将与 id 相关的 id/信息链接到复选框或 onclick 命令

到目前为止我的代码:

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1);

// Get our database connector
require("includes/conn.php");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>

<link href="css/styles.css" rel="stylesheet" type="text/css" />
</head>

<body>
    <div id="featured">
    <h2></h2>

    <div>

   <?php 
   error_reporting(E_ALL); 
   ini_set('display_errors', 1); 

    // Grab the data from our people table

    $sql = "SELECT * FROM people ORDER BY ID";
    $result = mysql_query($sql) or die ("Could not access DB: " . mysql_error());

    while ($row = mysql_fetch_assoc($result))
    
        echo "<div class=\"picture\">";
        echo "<p>";

        // Note that we are building our src string using the filename from the database
        echo "<img src=\"content/uploads/" . $row['filename'] . "\" alt=\"\" height=\"219\" width=\"350\" /><br />" . "<br />";
        echo $row['fname'] . " " . "<br />" . "<br />";
        echo "</p>";
        echo "</div>";
    

    ?>

    </div>

</div>

</body>
</html>

【问题讨论】:

【参考方案1】:

不需要复选框,你可以用锚点包裹图像

然后,在查询字符串中添加一个包含 id 的 url:

echo "
<a href='moreinfo.php?id=".$row['id']."'>
    <img src=\"content/uploads/" . $row['filename'] . "\" alt=\"\" height=\"219\" width=\"350\" />
</a>
 <br />" . "<br />";
echo $row['fname'] . " " . "<br />" . "<br />";

必填事项:

Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial。

现在,在 moreinfo.php 内部使用 PDO:

<?php
$results = array();
if(isset($_GET['id'])) 
    $id = $_GET['id'];
    $db = new PDO('mysql:host=localhost;dbname=DATABASE_NAME', 'username', 'password');

    $sql = 'SELECT * FROM people WHERE `id` = :id';
    $select = $db->prepare($sql);
    $select->bindParam(':id', $id, PDO::PARAM_INT);
    $select->execute();

    $results = $select->fetch(PDO::FETCH_ASSOC);
 else 
    header('Location: go_back_to_index.php');


?>

<?php if(!empty($results)): ?>
<h1>Results</h1>
<table cellpadding="10">
    <tr>
        <td>First Name:</td><td><?php echo $results['fname']; ?></td>
    </tr>
    <tr>
        <td>Last Name:</td><td><?php echo $results['lname']; ?></td>
    </tr>
    <tr>
        <td>Photo: </td><td><img src="content/uploads/<?php echo $results['filename']; ?>"  /></td>
    </tr>
    <!-- and so on -->
</table>
<?php endif; ?>

【讨论】:

非常感谢!我要马上试试 :) 我知道 MySQL 将来不会被支持,我正在努力,但我想先让一切正常工作 ;) 但我还有一个问题......可以这也可以用同样的方式制作一个复选框,这样我就可以删除一个条目? @FGOD 好吧,是的,也可以使用带有复选框的逻辑,但我认为使用收音机会更好,因为您的意图是检查单个条目 我需要它用于两个不同的功能,一页显示内容,这是您给我的带有 url 部分的内容,另一页是用户从数据库中删除需要的内容让用户选择一个或多个要删除的项目/图像,这就是为什么我正在考虑使用带有删除链接的复选框系统来检查所有被选中的内容... @FGOD 好吧,如果是这样的话,你可以,只要记住获取并重定向单个复选框值,当然在另一个主题的删除中,你可以收集这些检查值然后进行另一个操作。 非常感谢,我会研究如何将所有值收集在一起并制作删除命令:)(从未使用过数据库,所以这对我来说是全新的,给了我很多学习时间:))

以上是关于Checkbox只要被打钩就出发,(onclick,onchange都是要点击才能触发)的主要内容,如果未能解决你的问题,请参考以下文章

checkbox的联动问题

WPF checkbox 怎么实现 无论怎么点击 勾选框一直都不打钩

项目中全选和反选

qt4.8.3中checkbox的大小如何改变?不是整个checkbox的尺寸,是中间那个打钩的小方块的尺寸。

firefox中 checkbox属性checked="checked"已有,但复选框却不显示打钩的原因

wpf checkbox 如何做到点勾选框,只是打钩,不做任何事件处理,点右边文字,不打勾,只是处理相应事件