Перейти к содержимому


Вычисление JS


Сообщений в теме: 9

#1 arsenal

    Активный участник

  • Пользователи
  • PipPipPip
  • 448 сообщений

Отправлено 29 Июль 2013 - 11:06

Есть вычисление JS в поле "Периодичность платежей", котрое считает сумму платежа при изменении поля "Периодичность платежей".
function on_change_Periodichnost_platezhey(){
  if (document.getElementById('value1410').value=="ежеквартально" && (document.getElementById('value1409').value % 3)!=0) {
	 alert("При ежеквартальных платежах период действия договора ТО должен быть кратным 3 (трем)");
	 document.getElementById('value1410').value="ежемесячно";
	 //Преобразуем число в текстовую переменную
	 var summa = document.getElementById('value1429').value + ""; //Общая сумма
	 //Вычисляем сумму периодичного платежа
	 document.getElementById('value922').value=parseFloat(summa.replace(" ", ""))/document.getElementById('value1409').value;}
  else if (document.getElementById('value1410').value=="ежеквартально" && (document.getElementById('value1409').value % 3)==0) {
	 //Преобразуем число в текстовую переменную
	 var summa = document.getElementById('value1429').value + ""; //Общая сумма
	 //Вычисляем сумму периодичного платежа
	 document.getElementById('value922').value=parseFloat(summa.replace(" ", ""))/document.getElementById('value1409').value*3;}
  else if (document.getElementById('value1410').value=="ежемесячно") {
	 //Преобразуем число в текстовую переменную
	 var summa = document.getElementById('value1429').value + ""; //Общая сумма
	 //Вычисляем сумму периодичного платежа
	 document.getElementById('value922').value=parseFloat(summa.replace(" ", ""))/document.getElementById('value1409').value;}
  else document.getElementById('value922').value=0;
 
};
addHandler(document.getElementById('value1410'),   'onchange', on_change_Periodichnost_platezhey);
Все прекрасно работает. Есть еще несколько подобных вычислений с другими полями.
Решил для удобства перенести все вычисления JS из всех полей в одно поле. Для пробы перенес пока из одного поля,
$(document).ready(function on_change_Periodichnost_platezhey(){
  if (document.getElementById('value1410').value=="ежеквартально" && (document.getElementById('value1409').value % 3)!=0) {
	 alert("При ежеквартальных платежах период действия договора ТО должен быть кратным 3 (трем)");
	 document.getElementById('value1410').value="ежемесячно";
	 //Преобразуем число в текстовую переменную
	 var summa = document.getElementById('value1429').value + ""; //Общая сумма
	 //Вычисляем сумму периодичного платежа
	 document.getElementById('value922').value=parseFloat(summa.replace(" ", ""))/document.getElementById('value1409').value;}
  else if (document.getElementById('value1410').value=="ежеквартально" && (document.getElementById('value1409').value % 3)==0) {
	 //Преобразуем число в текстовую переменную
	 var summa = document.getElementById('value1429').value + ""; //Общая сумма
	 //Вычисляем сумму периодичного платежа
	 document.getElementById('value922').value=parseFloat(summa.replace(" ", ""))/document.getElementById('value1409').value*3;}
  else if (document.getElementById('value1410').value=="ежемесячно") {
	 //Преобразуем число в текстовую переменную
	 var summa = document.getElementById('value1429').value + ""; //Общая сумма
	 //Вычисляем сумму периодичного платежа
	 document.getElementById('value922').value=parseFloat(summa.replace(" ", ""))/document.getElementById('value1409').value;}
  else document.getElementById('value922').value=0;
 
};
addHandler(document.getElementById('value1410'),   'onchange', on_change_Periodichnost_platezhey);
);
Но в данном виде вычисление не работает. Что не так?

#2 arsenal

    Активный участник

  • Пользователи
  • PipPipPip
  • 448 сообщений

Отправлено 29 Июль 2013 - 14:05

up

#3 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 29 Июль 2013 - 14:38

Просмотр сообщенияarsenal (29 Июль 2013 - 11:06) писал:

Но в данном виде вычисление не работает. Что не так?

Очевидно, вы неверно используете метод $(document).ready. См. документацию.

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 29 Июль 2013 - 14:38

Просмотр сообщенияarsenal (29 Июль 2013 - 14:05) писал:

up

Все темы просматриваются, up-ать для этого не нужно.

#5 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 05 Август 2013 - 11:50

Вопрос касается яваскрипта. Есть такой код:
$(function() {
if(document.getElementById('value{$one_field.id}').value=="Оприходовано") {			
   $(".sub_add_new_line").hide();
   document.getElementById('user_button_div_21').style.display='none';
   document.getElementById('user_button_div_31').style.display='none';			 
}
});
Код прекрасно отрабатывает для администратора, однако для группы "работники" не срабатывает. В какую сторону смотреть? Что это может быть?

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Август 2013 - 13:07

Очевидно, у группы нет прав на редактирование поля, соответственно неоткуда брать document.getElementById('value{$one_field.id}').value.

#7 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 05 Август 2013 - 13:30

Просмотр сообщенияCbCoder (05 Август 2013 - 13:07) писал:

Очевидно, у группы нет прав на редактирование поля, соответственно неоткуда брать document.getElementById('value{$one_field.id}').value.
Да так и есть. Поправил код. Теперь работает.

$(function() {
if($('#view_cell_{$one_field.id}').text()=="Оприходовано") {			
   $(".sub_add_new_line").hide();
   document.getElementById('user_button_div_21').style.display='none';
   document.getElementById('user_button_div_31').style.display='none';			
}
});
И еще такой вопрос. Хочу скрывать эти кнопки доп.действие во время добавления. Как это сделать?

Сообщение отредактировал wondertalik: 05 Август 2013 - 13:35


#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Август 2013 - 14:24

Затрудняюсь сказать. Я бы по конкретным полям настраивал.

#9 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 05 Август 2013 - 17:02

Просмотр сообщенияCbCoder (05 Август 2013 - 14:24) писал:

Затрудняюсь сказать. Я бы по конкретным полям настраивал.
Что вы имеете ввиду?

#10 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Август 2013 - 17:14

То, что вы выше делали, условие по значению полей.





Количество пользователей, читающих эту тему: 3

0 пользователей, 3 гостей, 0 анонимных