我有一个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 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>
如何根据选中的option
填充textarea
例如,如果所选选项的值= 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);
}
});
});
您必须遍历数据数组并检查每个对象序列,看看它是否与所选选项的值匹配。
注意:确保sequence参数是字符串或将选项值转换为整数。
这是未经测试的,但应该让您接近。使用美元。Grep将在数据数组中搜索与序列匹配的任何对象,并将这些对象返回给matches数组。因为应该只有一个。您可以只输出第一个匹配的响应。
$('#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 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(此页用于script标签,所以要注意这里)
<?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>