用所选选项中的数据库值填充文本区域


Fill textarea with database value from selected option

我有一个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>