将下拉列表存储为实时变量?

时间:2012-10-03 14:00:34

标签: php jquery

我有以下PHP:

<?php
$default = 'Select a job role';
$query = "SELECT DISTINCT Job_Title FROM rates";

$result = mysql_query($query);

while($myrow = mysql_fetch_array($result)) {
$action = $myrow['Job_Title'];
echo "<option value='$action'".($action == $default ? ' selected="selected"' : '').">$action</option>\n";
}       
?>

我需要将他们从此下拉列表中选择的任何内容存储为变量。显然,如果他们改变了他们的选择,它将继续改变变量。

这背后的原因是我有另一个select语句,其结果取决于此处的选择。 如果不能用PHP完成,那么如果需要,Jquery就是首选。

<select name="job-role">
<option value="J1">J1</option>
<option value="J2">J2</option>
<option value="J3">J3</option>
</select>

4 个答案:

答案 0 :(得分:2)

除非您将表单发回页面本身或通过AJAX发送,否则您无法根据下拉列表更改php变量。如果要使用jquery获取值,可以执行类似

的操作
$(function(){

    var selectValue = $('select[name="job-role"]').val();

    $.post('somepage.php', { valueToSend: selectedValue },function(data){
        //HTTP-post completed
    });        

});

<强> somepage.php

if(isset($_POST['valueToSend'])) {

    $selectedValue = $_POST['valueToSend'];

    //use $selectedValue in your query 
}

答案 1 :(得分:1)

要在选择新值时更新变量中的值,请使用jQuery .change事件处理程序。至于将此新值传递给服务器,您可以使用ajax执行此操作。我在下面添加了一个示例post request

$(document).ready( function() {

    var jobRole = $('select[name="job-role"]').val();

    $('select[name="job-role"]').change( function() {
        jobRole = $(this).val();
    });

    //...
    $.post("url.php", "jobRole="+ encodeUriComponent(jobRole), function() {
        // success
    });
});

答案 2 :(得分:0)

尝试this jsfiddle。

$(function(){
var selectValue = $('select[name="job-role"]').val(); //gets default selection
//alert(selectValue);
$('select[name="job-role"]').change(function(){
selectValue = $(this).val(); //gets changed selection
//alert(selectValue);
});
});​

答案 3 :(得分:0)

除非你按照约翰的建议去做,否则你不能通过PHP做到这一点。在jQuery中,您需要将更改方法绑定到select

var value = '';
$('select[name="job-role"]').change(function() {
    value = $(this).val();
})

FIDDLE