我需要从我的函数输出多个值并访问外部变量,输入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);
?>
答案 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);
?>