Хорошо, я сломаю его.
Во-первых, это решение использует библиотеку jQuery, поэтому вам нужно ссылаться на это в разделе <HEAD>
. Вы так хотите, чтобы ссылаться на яваскрипт файла, в котором вы будете размещать свой код:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<!-- You need to define the file name and path as appropriate for yourself. -->
<script type="text/javascript" src="http://path-to-your-url.com/scripts/script.js"></script>
</head>
...
</html>
Далее вам необходимо сделать некоторые небольшие изменения в разметку.
<input value="42500" type="text" name="pharmacist" />
<select>
<input value="17500" type="text" name="dispenser" />
становится:
<input value="42500" type="text" name="pharmacist" id="pharmacist" />
<select id="rate">
<input value="17500" type="text" name="dispenser" id="dispenser" />
Основным изменением является новым id
атрибутов. Они будут использоваться вашим javascript для идентификации ключевых элементов кода (вы можете использовать name
атрибуты для этого, поскольку JQone предлагает - я предпочитаю использовать id
с точки зрения стиля и потому, что код селектора jQuery/CSS меньше).
Наконец, вы создаете файл javascript (здесь я называю его «script.js») и помещаем его в нужную папку на веб-сайте (в соответствии с путём, используемым в разделе HEAD документа HTML, это будет подпапка корневой папки веб-сайта, называемая «скрипты»). Файл будет иметь следующее содержание:
// This code sets up the javascript. It is saying: 'when the document is ready, register the "changeRate" function with the "change" event of the select box'. So whenever the select box's value is changed, the function will be called.
$(document).ready(function() {
$('select#rate').change(changeRate);
});
// This sets the values of the text values based upon the selected rate and the existing value.
var changeRate = function() {
var rate = $(this);
var pharmacist = $('input#pharmacist');
var dispenser = $('input#dispenser');
if (rate.val() == 'perhour') {
pharmacist.val(calculateHourlyFromAnnual(pharmacist.val()));
dispenser.val(calculateHourlyFromAnnual(dispenser.val()));
}
else if (rate.val() == 'perannum') {
pharmacist.val(calculateAnnualFromHourly(pharmacist.val()));
dispenser.val(calculateAnnualFromHourly(dispenser.val()));
}
};
// Calculates an hourly rate based upon the supplied per annum rate. At the moment this doesn't take into account scenarios where the provided value is empty or is not a number so you will need to adjust appropriately.
function calculateHourlyFromAnnual(annumRate)
{
-- Making the assumption that a per-annum rate of $50,000 translates to an hourly rate of $50
return annumRate/1000;
}
// Calculates a per-annum rate based upon the supplied hourly rate. At the moment this doesn't take into account scenarios where the provided value is empty or is not a number so you will need to adjust appropriately.
function calculateAnnualFromHourly(hourlyRate)
{
-- Making the assumption that an hourly rate of $50 translates to a per-annum rate of $50,000
return hourlyRate * 1000;
}
Более вероятно, формула я использовал для расчета изменения скорости является слишком упрощенным, но я не знаю, бизнес-требований в вашей ситуации. Вы должны сами выяснить правильную формулу.
В принципе, если вы выполните следующие шаги, значения должны быть изменены при переключении списка выбора между годовым и часовым.
Хорошо спасибо. Вход может быть изменен пользователем на любую стоимость в год, который у них есть, поэтому результирующее число будет полагаться на число, которое они вводят (или если они оставляют вход по умолчанию). – Rob
Вы просто ответили передо мной. Я просто подумал, что указываю, что выбранный вами селектор должен начинаться с «#», если он ссылается на идентификатор select (для HTML «
@zac Итак, этот ответ просто говорит, если вход изменяется в час, а затем измените входное значение на 100? В противном случае это не совсем так, мне нужно, чтобы все, что когда-либо было на входе, выполняло расчет (как при вычислении значения в час за введенное значение), затем выводит результат на вход. Полученный результат будет отличаться в зависимости от того, что было введено в первую очередь, если вы видите, что я говорю. – Rob