Привет всем! У меня есть обработчик формы, который выглядит следующим образом:
<pre><code>if ($go) {
$aData = array();
$aData['payday'] = isset($_POST['payday']) ? $_POST['payday'] : '';
}
if (isset($url['get']) && in_array($url['get'], array('price', 'data'))) {
// Цена
$price = 50;
if ($url['get'] == 'price')
sys::outjs(array('sum' => $price));
}</code></pre>
А вот HTML-код формы:
<pre><code class="html"><label class="form-label" for="payday">Кол-во дней<span
class="ms-2 text-primary fs-10"></span></label>
<input id="payday" name="payday" type="number" value="1" class="form-control"
onchange="upd_price()">
<div class="invalid-feedback"></div>
</div>
<div class="d-flex fs-10 mb-1">
<p class="mb-0">Цена — </p><span class="ms-1">50 руб. день</span>
</div>
<div class="d-flex fs-10 mb-1 text-success">
<p class="mb-0">Итого — </p ><span class="ms-1"><span id="sum">...</span> руб. скидка: 0%</span></code></pre>
Также у меня есть JavaScript, который обновляет сумму в зависимости от значения в поле ввода с id="payday":
<pre><code class="javascript">function upd_price() {
$.getJSON(home + 'domen/page/payday/' + $('#payday').val() + '/get/price', function (arr) {
$('#sum').html(arr['sum']);
});
}</code></pre>
Однако сумма остается равной 50. Как я могу сделать так, чтобы значение, введенное в поле input, умножалось на цену (в данном случае 50)?
Вам необходимо внести изменения в обработчик формы и JavaScript, чтобы сумма обновлялась в зависимости от значения в поле ввода `payday`. В вашем текущем коде вы всегда возвращаете фиксированное значение `price`, не учитывая количество дней, введенное пользователем.
Вот шаги, которые нужно выполнить для правильного обновления суммы:
1. **Измените PHP код**, чтобы он умножал количество дней на цену:
```php
if ($go) {
$aData = array();
$days = isset($_POST['payday']) ? (int)$_POST['payday'] : 1; // Приведение к числу
$price_per_day = 50; // Цена за день
$total_price = $days * $price_per_day; // Общая сумма
// Здесь можно возвращать общую сумму
sys::outjs(array('sum' => $total_price));
}
```
2. **Измените JavaScript функцию** для отправки корректных данных на сервер:
Необходимо убедиться, что вы вызываете `$.getJSON`, используя значение из поля, и что сервер правильно обрабатывает этот запрос.
```javascript
function upd_price() {
var paydayValue = $('#payday').val(); // Получаем значение из поля input
$.getJSON(home + 'domen/page/payday/' + paydayValue + '/get/price', function (arr) {
$('#sum').html(arr['sum']); // Обновляем элемент с id="sum"
});
}
```
Таким образом, когда пользователь изменяет значение в поле `payday`, функция `upd_price()` будет отправлять запрос с актуальным количеством дней, и PHP обработчик будет возвращать соответствующую сумму.
3. **Не забудьте про валидацию**: Вы можете добавить проверки на неотрицательное число и т.д., чтобы гарантировать корректные входные данные.
Теперь при изменении значения в поле количество дней будет пересчитано на основании установленной цены, и сумма будет отображаться корректно в элементе с id `sum`.
Заменить:
$price = 50;
if ($url['get'] == 'price')
sys::outjs(array('sum' => $price));
на:
$price = 50;
$days = isset($url['params'][0]) ? (int) $url['params'][0] : 1;
$sum = $price * $days;
if ($url['get'] == 'price')
sys::outjs(array('sum' => $sum));