Я хотел бы знать, можете ли вы выполнять сложение или вычитание или любую базовую операцию в режиме реального времени на веб-странице.
Я имею в виду отсутствие какой-либо кнопки, когда вы вводите данные в текстовое поле или ввод (поскольку я разрабатываю веб-сайт), результат математической операции автоматически появляется в метке.
Я искал некоторые вещи в JavaScript или, альтернативно, AJAX, вызывающий PHP-скрипт, но ничего не смог найти.
Вызов AJAX может быть сделан для PHP, чтобы вернуть результат. Однако я думаю, что гораздо проще сделать это непосредственно в JavaScript.
Чтобы выполнить вычисление в JavaScript, мы должны использовать функцию
eval()
, что может привести к угрозе безопасности. Для этого мы проводим минимальную проверку, чтобы убедиться, что вы вводите только цифры или математические знаки.Редактировать: после повторного прочтения вашего поста я подумал, что вы, возможно, также спрашиваете, как я могу ввести математическое выражение и решить его в режиме реального времени. В таком случае я рекомендую вам пройти следующую страницу и узнать
eval
о функции Math.js :Вот пример того, как это работает:
События
onchange
,onkeydown
(которые являются лучшей заменой устаревшимonkeypress
) иkeyup
(которые лучше всего подходят для обнаружения изменения нажатия клавиши на нажатие клавиши) и т.д... являются общими для всех элементов DOM, поэтому они доступны в метках<input>
. Эти события должны быть реализованы в веб-интерфейсе, а не в движке PHP.Вот пример того, как это сделать с помощью
onchange
andkeyup
:Вы можете использовать AngularJS для создания реактивности , пока пользователь вводит данные операции. В этом случае сложите и вычтите.
Я использовал общий код для выполнения математических операций из js, он отлично работает, в моем конкретном случае я извлекаю НДС и общую сумму и стоимость единицы, но у меня есть следующая проблема, я загружаю поля динамически, это означает, что я создаю несколько полей для применения этой функции, и она применяет ее только к первому полю.Как сделать, чтобы эта функция применялась ко всем полям с именами num1 и num2 ?