2013-08-20 42 views
0

我試圖將選中的複選框的值傳遞到使用href的下一頁。我無法使用提交按鈕。我希望使用JavaScript完成此操作。將複選框值傳遞給編輯(使用href)

我的複選框填充了表row-docid中的值。這裏是我在check.php複選框的代碼:

... 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> 

我的問題:我如何通過選中複選框的值,當我點擊編輯鏈接。

注:我搜索了一個類似的問題,但找不到一個。如果我錯過了任何類似的問題,請向我提供鏈接。

在此先感謝。 Lakshmi

注意:按照JaakKütt的建議,將複選框的ID從chk_docid更改爲動態行值($ row ['docid'])。

+0

你的結果會產生多少結果?確保你爲每個人分配一個不同的id =「chk_docid」。我會去class =「chk_docid」和id =「chk_docid <?= $ row ['docid']?>」或其他東西:) –

+0

目前它有10行我在測試環境中,但數據預計將在生產中增長(至少有幾百個)。 我想我需要將id重命名爲docid本身的值..am我是對不對? – user2698970

+0

使用一些前綴+ ID,因爲它應該只以a-z或A-Z開頭 –

回答

0

確保你的投入有不同的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讀取值與PHP使用$ _GET ['name_of_input_element']

+0

感謝JaakKütt...我確實已經按照您的建議更改了複選框的ID。 關於鏈接,你能給我的Javascript版本。我不使用JQuery .. – user2698970

+0

當然,只是片刻 –

+0

謝謝JaakKütt。我試圖理解你在函數中給出了什麼。 同時,如何獲取傳遞給editdoc頁面的複選框的值? – user2698970

1

我找到了解決方案!

雖然我以不同的方式做到了,我感謝雅克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']; 
?> 

謝謝。