Проблемы (основываясь на вашем сообщении на веб-сайте daniweb):
- Нет поля ввода с идентификатором
est_shi_val
- Просмотр вашегокод, вы хотите использовать оба поля выбора
old
и new
, после изменения результат будет помещен в скрытое поле ввода.Но результат вернется, только если оба параметра old
и new
имеют выбранные параметры.Это то, что вы хотите?Или хотя бы один из них должен быть выбран, и результат вернется? - Использовать базу данных для поиска условий вместо того, чтобы вручную создавать
if-else
условия
Инструкции: Вы можете сначала удалить свой атрибут / вызов onchange
в полях выбора old
и new
.
Вызов AJAX:
$("#old, #new").change(function(){ /* WHEN YOU CHANGE THE VALUE OF THE OLD OR NEW INPUT FIELD */
var old = $("#old").val(),
newval = $("#new").val();
$.ajax({ /* TRIGGER THE AJAX CALL */
type: "POST", /* TYPE OF METHOD TO USE TO PASS THE DATA */
url: "ajax_ship_data.php", /* PAGE WHERE WE WILL PASS THE DATA */
data: {'old':old, 'new':newval}, /* THE DATA WE WILL BE PASSING */
dataType: 'json',
success: function(result){ /* GET THE RETURNED DATA */
$("#results").html(result.message); /* THE RETURNED MESSAGE WILL BE SHOWN IN THIS DIV, PROVIDED THAT YOU HAVE A DIV WITH AN ID OF "results" */
$('#shipping_weight').val(result.weight); /* ASSUMING THAT YOU HAVE A HIDDEN INPUT FIELD WITH AN ID OF "shipping_weight" */
}
});
});
Тогда на вашем ajax_ship_data.php
:
$shipping_weight = 0;
$message = 'Please select an option from both fields.';
if(isset($_POST['old']) && isset($_POST['new'])){
$old = $_POST['old'];
$new = $_POST['new'];
//part 1
if($old == 'three_compact' && $new == 'five_compact'){
$shipping_weight = 10;
$message = 'Shipping weight is 10.';
}
/** REST OF IF-ELSE CONDITIONS **/
}
echo json_encode(array('message' => $message, 'weight' => $shipping_weight));
Другой вариант: Нет AJAX
Вы также можете сделать это без использования AJAX, так как вы создаете вручнуюусловия:
$("#old, #new").change(function(){
var old = $("#old").val(),
newval = $("#new").val();
if(old=='three_compact' && newval=='five_compact'){
$("#results").text('10');
}
/* REST OF IF-ELSE CONDITIONS */
});
Взгляните на эту скрипку .