Php 用所选选项中的数据库值填充textarea
我有一个select元素,它在数据库中具有序列值:Php 用所选选项中的数据库值填充textarea,php,jquery,Php,Jquery,我有一个select元素,它在数据库中具有序列值: <option value="1">one</option> <option value="2">two</option> 然后我有了这个PHP代码,它将表数据放入一个数组中 <?php $return_arr = array(); $sql="SELECT * from tickets_standardresponses "; $rs=mysql_query($sql,$conn) or
<option value="1">one</option>
<option value="2">two</option>
然后我有了这个PHP代码,它将表数据放入一个数组中
<?php
$return_arr = array();
$sql="SELECT * from tickets_standardresponses ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
while($result=mysql_fetch_array($rs)) {
$return_arr[] = array('sequence' => $result["sequence"], 'response' => $result["response"]);
}
$data = json_encode($return_arr);
?>
<script type="text/javascript">
$(document).ready(function(){
var data = <?php echo $data; ?>;
$('#standard_response').on('change',function() {
});
});
</script>
如何根据所选选项填充文本区域
例如,如果所选选项的值=1,我希望将序列=1的数组中的响应数据放入其中
我不想使用Ajax使用GET/POST请求
var data = <?php echo $data; ?>;
$('#response').on('change', function() {
var sequence = $(this).val();
//Check each object in the data array
$.each(data, function( index, obj ) {
if (obj.sequence === sequence) {
//The "result" textarea
$('#result').text(obj.response);
}
});
});
您必须在数据数组中循环并检查每个对象序列,看看它是否与所选选项的值匹配
注意:确保序列参数是字符串或将选项值转换为整数 这是未经测试的,但应该可以让您接近。使用$.grep将在数据数组中搜索与序列匹配的任何对象,并将这些对象返回到匹配数组。因为应该只有一个。您可以只输出第一个匹配响应
$('#standard_response').on('change',function() {
var seq = $(this).val();
var matches = $.grep(data, function(e) { return e.sequence == seq });
if(matches.length > 0){
$('textarea').text(matches[0].response);
}
});
因为,下拉列表不完全可见。 我假定类名为“SequenceSelect”,它也用于脚本标记中。 所以,若您要更改select下拉列表的类名,也要更改脚本标记
<select class='SequenceSelect'>
<option value="1">one</option>
<option value="2">two</option>
</select>
<div class="ShowSequenceResponse">
<textarea name="SequenceRespeonse"></textarea>
</div>
<script>
$('.SequenceSelect').change(function(){
var SequenceNo= $('.SequenceSelect').val();
$.ajax({url:"AjaxSequenceSelect.php?SequenceNo="+SequenceNo,cache:false,success:function(result){
$('#ShowSequenceResponse').html(result);
}});
});
</script>
创建一个页面AjaxSequenceSelect.php
这个页面在脚本标签中使用,所以请注意这里
<?php
extract($_GET);
$sql="SELECT * from tickets_standardresponses WHERE sequence='$SequenceNo'";
$rs=mysql_query($sql,$conn);
while($result=mysql_fetch_array($rs))
{
$Response=$result['response'];
}
?>
<textarea name="SequenceRespeonse"><?echo $Response;?></textarea>
我没有在GET/POST请求中使用AJAX,所以我不认为这是一个可能的重复,我在这里没有看到文本区域。但是您可以只执行$'standard_response'。在'change'上,函数{$'myTextAreaId'。text$this.val;};它不是所选选项的值,而是PHP代码生成的JQuery数组中的数据。如果您不使用ajax,那么您只想在问题中分享生成的HTML的相关部分以及到目前为止的JS。不需要共享PHP,尤其是当我们看不到它与您的问题的相关性时。