-1

私は次の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

4 に答える 4

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 
}
于 2012-10-03T14:06:53.610 に答える
1

新しい値が選択されたときに変数の値を更新するには、jQuery.changeイベントハンドラーを使用します。この新しい値をサーバーに伝達することに関しては、ajaxを使用してこれを行うことができます。以下に投稿リクエストの例を示します。

$(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
    });
});
于 2012-10-03T14:15:54.327 に答える
0

この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);
});
});​
于 2012-10-03T14:13:00.813 に答える
0

Johanが提案することを行わない限り、phpを介してそれを行うことはできません。jQueryでは、changeメソッドをにバインドする必要がありますselect

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

フィドル

于 2012-10-03T14:13:13.870 に答える