【问题标题】:Pass checkbox value to Edit (using href)将复选框值传递给编辑(使用 href)
【发布时间】:2013-08-22 05:28:00
【问题描述】:

我正在尝试使用 href 将所选复选框的值传输到下一页。我无法使用提交按钮。我希望使用 JavaScript 来完成。

我的复选框填充了表格 row-docid 中的值。这是我在 view.php 中的 Checkbox 代码:

... mysql_connect("$host", "$dbuser", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $doctbl_name";
$result=mysql_query($sql);
if(!$result ){ die('Could not get data: ' . mysql_error()); }
while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {  ?>
<tr><td><input type="checkbox"  name="chk_docid[]" id="<?php echo $row['docid'];?>" 
         value="<?php echo $row['docid'];?>"></td> ...

我在 view.php 的顶部有一个编辑链接作为菜单。

<a href="editdoc.php>Document</a>

我的问题:当我点击编辑链接时,如何传递选中复选框的值。

注意:我搜索了一个类似的问题,但找不到。如果我错过了任何类似的问题,请提供链接。

提前致谢。 拉克希米

注意:按照 Jaak Kütt 的建议,将复选框的 id 从 chk_docid 更改为动态行值 ($row['docid'])。

【问题讨论】:

  • 您的 while 产生了多少结果?确保为每个人分配不同的 id="chk_docid"。我会选择 class="chk_docid" 和 id="chk_docid=$row['docid']?>" 什么的:)
  • 目前我在测试环境中有大约 10 行,但预计数据会在生产中增长。(至少几百个).. 我想,我需要将 id 重命名为docid 本身的价值……我说得对吗?
  • 使用一些前缀 + id,因为它只能以 a-z 或 A-Z 开头
  • 我的 docid 是 varchar 类型,默认情况下它以字母开头,后跟连字符 (-),然后是数字。那么直接使用row id作为我的checkbox id可以吗?
  • jep,在这种情况下是

标签: javascript variables checkbox href


【解决方案1】:

我找到了解决办法!!!

虽然我以不同的方式做到了,我感谢 Jaak Kütt 的所有支持,并帮助我想出一种可能的方式..

这就是我所做的。我将表单命名为 showForm 并通过函数本身移动到 editdoc.php。

我的复选框:

<form name="showForm">
<input type="checkbox" name="chk_docid[]" id="<?php echo $row['docid'];?>" value="<?  php echo $row['docid'];?>">

我的链接:

<a id="a_editdoc" onclick="getchkVal();" title="Edit Document">Document</a>

对应的脚本:

<script>
    function getchkVal() {
        var contents, vals = [], mydocid =  document.forms['showForm']['chk_docid[]'];
        for(var i=0,elm;elm = mydocid[i];i++) {
            if(elm.checked) {
                vals.push(encodeURIComponent(elm.value)); 
            }    
        }
        contents = vals.join(',');
        window.location="editdoc.php"+"?v="+contents;     
    }
</script>

在editdoc.php中:

<?php
    $cval=$_GET['v'];
?>

谢谢。

【讨论】:

    【解决方案2】:

    确保您的输入具有不同的 id-s..

    while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {  ?>
    ...<input type="checkbox"  name="chk_docid[]" class="chk_input" 
    id="chk_docid<?php echo $row['docid'];?>" value="<?php echo $row['docid'];?>">...
    

    使用 jQuery:

    <a href="editdoc.php" id="editdoc">Document</a>
    
    $("#editdoc").click(function(){
        var selection=$("input.chk_input:checked");
        if(selection.length){
            var href=$(this).attr('href')+'?'+selection.serialize();
            $(this).attr('href',href);
        }
        return true;
    });
    

    非 jQuery:

    <a onclick="submitWithChecked(this,'chk_input')" href="editdoc.php">Document</a>
    
    function submitWithChecked(e,className){
        // fetch all input elements, styled for older browsers
        var elems=document.getElementsByTagName('input');                    
        for (var i = 0; i < elems.length; ++i) {
            // for each input look at only the ones with the class you are intrested in
            if((elems[i].getAttribute('class') === className || elems[i].getAttribute('className') === className) && elems[i].checked){
                // check if you need to add ? or & infront of a query part
                e.href+=(!i && e.href.indexOf('?')<0)?'?':'&';
                // append elements name and value to the query  
                e.href+=elems[i].name+'='+encodeURIComponent(elems[i].value);
            }
        }    
        return true;
    }
    

    在 editdoc.php 中使用 $_GET['name_of_input_element'] 使用 php 获取值

    【讨论】:

    • 谢谢 Jaak Kütt... 我确实按照您的建议更改了复选框的 ID。关于链接,你能给我Javascript版本吗?我没有使用 JQuery..
    • 没问题,请稍等
    • 感谢 Jaak Kütt。我试图了解您在函数中给出的内容。同时,如何获取editdoc页面中传递给的复选框的值?
    • 添加了一些 cmets 并删除了 href 的额外 var assingment
    • 我试过给 $_GET['chk_docid'];在editdoc.php中,它没有显示。这就是我所做的。
    猜你喜欢
    • 1970-01-01
    • 2017-10-19
    • 2015-06-07
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    相关资源
    最近更新 更多