如何输出多个值?

时间:2014-02-26 09:23:17

标签: javascript php jquery html sql

我需要从我的函数输出多个值并访问外部变量,输入hidden和POST变量以启用从php访问数据。

数据来自多行表中的用户输入值,这是多行计数,其他值来自数据库。

的Javascript;

function validateForm() {

$('textarea.pc_1').each(function(event){ 
      var thought= $(this).val();     
      $("input[name='status']").val(thought);
      alert(status.value);
  })
}

上面的Javascript函数可以提醒多个值,但是当值post进入隐藏输入时,只有单值POST到pc1_process.php。我只需要从这个函数输出多个值并传入隐藏的输入。从pc1_process.php上的POST访问此值。

pc1.php

<script type="text/javascript">
function validateForm() {

$('textarea.pc_1').each(function(event){ 
      var thought= $(this).val();     
      $("input[name='status']").val(thought);
      alert(status.value);
  })
}
</script>
...
...
<form name="myForm" id="contact" method="post" action="../lpc/pc1_process.php" onsubmit="return validateForm()">

<table id="tftable" class="MyTable" style="font-size:12px; color:#333333; width:100%; border-width: 1px; border-color: #729ea5; border-collapse: collapse;" border="1" >
        <thead>
        <tr style="background-color:#acc8cc;">
        <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;">Issues</td>
        <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;">Notes <br></td>
        <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;">Status <br></td>
        </tr>
    </thead>
    <?php 
    if ($info6['datetime_submit'] != null){
    $alert_null = "";   
    $check11 = mysql_query("select *
    from    (
    select * from page1_table union all
    select * from page2_table 
    ) t
    where t.submit = 'No' AND t.userid = '".$_SESSION['userid']."'") or die(mysql_error()); 
    while($row = mysql_fetch_array($check11)) {
        ?>              
    <tr style="background-color:#d4e3e5;">
        <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;"><?php echo $row["issues"];?></td>
        <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;"><?php echo $row["notes"];?></td>
        <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;">
            <textarea class="pc_1" style="border: none;border-color: Transparent;overflow: auto;width: 100%;height: 100%;background-color:#d4e3e5;resize: none; "></textarea>
        </td>
    </tr> 
    <?php }

}?>
</table>

<br><br>    
<input type="hidden" id="status" name="status"/>
<input style="float: right;" type="image" <?php echo $disabled?> src=<?php echo $button_off?> onMouseOver="this.src='../images/submit_button_on.png'" onMouseOut="this.src='../images/submit_button_off.png'">
</form> 

pc1_process.php

<?php
$status = isset($_POST['status'])?filter_input(INPUT_POST, 'status', FILTER_SANITIZE_STRING):"";

echo($status);
?>

3 个答案:

答案 0 :(得分:1)

你可以这样传递:

function validateForm() {
    var thought = $('textarea.pc_1').map(function(){ 
                        return this.value;
                  }).get();
    $("input[name='status']").val(thought); // <--this holds ',' separated values
}

因此,在上面的代码中,var thought包含一系列值['val1', 'val2', ...n],因此现在将这些值设置为$("input[name='status']")


.map()ie 6, 7, 8版本中遇到了一些问题,因此您可以执行以下操作:

function validateForm() {
    var thought = [];
    $('textarea.pc_1').each(function(){ 
         thought.push(this.value);
    });
    $("input[name='status']").val(thought); // <--this holds ',' separated values
}

答案 1 :(得分:0)

要么必须创建具有唯一名称的多个隐藏变量,要么输入字段的name属性应该是一个数组(name ='status []'),或者通过使用一些唯一标识符将textarea的值附加到同一隐藏变量中,以便你可以爆炸它们以获得每个的价值。

如果您将输入名称设置为数组,那么您将在PHP脚本中拥有数组中的所有值,如$ _POST ['status']

在上面的JS函数中,你将值赋给隐藏变量,所以我认为你只获得了PHP脚本中的最后一个值。

答案 2 :(得分:0)

为什么要将textarea内容复制到隐藏字段?

如果在textareas中添加name属性,则可以在PHP中访问这些名称。此外,如果您为每个textarea指定相同的名称,但名称末尾有[],则可以将textarea值作为数组访问:

while($row = mysql_fetch_array($check11)) {
?>              
<tr style="background-color:#d4e3e5;">
    <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;"><?php echo $row["issues"];?></td>
    <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;"><?php echo $row["notes"];?></td>
    <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;">
        <textarea name="status[]" class="pc_1" style="border: none;border-color: Transparent;overflow: auto;width: 100%;height: 100%;background-color:#d4e3e5;resize: none; "></textarea>
    </td>
</tr> 
<?php }

pc1_process.php

<?php
$all_statuses = '';
if (isset($_POST['status'])) {
    foreach($_POST['status'] as $status) {
        // Add filtering here
        $all_statuses .= $status;
    }
}
echo($all_statuses);
?>