Javascript заполнение скрытых полей при наведении курсора мыши — перед щелчком

#javascript #php #jquery #ajax #forms

#javascript #php #jquery #ajax #формы

Вопрос:

В поисках решения другой проблемы я столкнулся с возможностью запуска javascript при наведении курсора мыши

Я хотел бы запустить это:

 $(document).ready(function(){

function myPayment()
{

var value = document.mortgagecalc.value_input.value;
var rate = document.mortgagecalc.rate_input.value;
var term = document.mortgagecalc.term_input.value;
var deposit = document.mortgagecalc.deposit_input.value;
var fee = document.mortgagecalc.fee_input.value;
var totalloan = ((value   fee) - deposit) * 1   rate;
var totalinterest = (totalloan * 1   rate) - totalloan;
var months = (term * 12);
var repay = totalloan / months;
var interest = totalinterest / months;

// Calculate mortgage payment and display result
document.getElementById('repay_input').value = repay;
document.getElementById('interest_input').value = interest;
}
}
  

Когда пользователь наводит курсор мыши на мою кнопку отправки

Когда скрипт запускается, я бы хотел, чтобы он заполнял эти поля, которые затем включаются в действие формы

 <input type="hidden" name="repay" id="repay_input" value="">
<input type="hidden" name="interest" id="interest_input" value="">
  

Сейчас это, похоже, не работает, но это может быть потому, что я пропустил небольшую вещь или она просто не будет работать полностью

Спасибо — Если у кого-нибудь есть лучшая идея о том, как достичь моей цели, пожалуйста, дайте мне знать, я пробовал PHP, но без радости

Кнопка для наглядности

 <button class="col-sm-4 enter-button" type="submit" name="submit" onmouseover="return myPayment()" value="Calculate">Calculate Payments</button>
  

Обновить:

Я изменил javascript и кнопку, но затем пропустил присвоение имени форме в соответствии со ссылкой в JS

Также мои расчеты по ипотеке были ошибочными из-за того, как форма собирает процентную ставку

Комментарии:

1. Как вы привязываете событие наведения курсора мыши? его трудно отлаживать, когда все части не включены в сообщение .. также, пожалуйста, постарайтесь предоставить минимальный, полный и проверяемый пример

2. Я не вижу никакого использования mouseover в вашем коде. Где именно у вас это есть?

3. @SajjanSarkar — Добавлено

4. @Dekel — Добавлено к вопросу

Ответ №1:

Объявите свою функцию вне document.ready оболочки jQuery, и ваша кнопка должна выглядеть только так:

 function myPayment()
{
  var value = document.mortgagecalc.value_input.value;
  var rate = document.mortgagecalc.rate_input.value;
  var term = document.mortgagecalc.term_input.value;
  var deposit = document.mortgagecalc.deposit_input.value;
  var fee = document.mortgagecalc.fee_input.value;
  var totalloan = ((value   fee) - deposit) * 1   rate;
  var totalinterest = (totalloan * 1   rate) - totalloan;
  var months = (term * 12);
  var repay = totalloan / months;
  var interest = totalinterest / months;

  // Calculate mortgage payment and display result
  document.getElementById('repay_input').value = repay;
  document.getElementById('interest_input').value = interest;
}
  
 <button onmouseover="myPayment()" ...></button>
  

Комментарии:

1. Эти изменения, похоже, не сработали — нужно ли мне, чтобы скрипт находился в определенном месте, например, под формой?

2. @Frsti Нет, потому что это функция, объявленная так, как function name() { ... } она должна быть способна перемещаться куда угодно. Поместите функцию в ее собственный <script></script> элемент внутри head.

3. Я получаю сообщение об ошибке в консоли Chrome — Uncaught TypeError: не удается прочитать свойство ‘value_input’ неопределенного значения, по-видимому, ему не нравится использование значения? Изменен на «кредит», но по-прежнему выдает ошибку

4. Хорошо, я обнаружил ошибку, я не назвал форму, на которую ссылался JS, и я получаю цифры в своих полях, что является лучшим, что я сделал за весь день — большое вам спасибо