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


Вычисление JS и PHP


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

#1 arsenal

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

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

Отправлено 30 Январь 2012 - 21:52

Версия 195, ревизия от 25.01.12.
При редактировании записи при изменении поля1 через вычисление JS меняю значение поля2, в поле2 появляется новое значение, т.е. вычисление срабатывает. Однако при сохранении записи поле2 сохраняется пустым. Т.е. фактически новое значение поля2 при вычислении JS в базу не записывается. Приходится то же самое вычисление дублировать в РНР.
Так и должно быть или я что-то не так делаю. То же самое было и в версии 194.

#2 CbCoder

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

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

Отправлено 31 Январь 2012 - 08:57

Возможно что то не так делаете, т.к. при правильном изменении все должно сохраниться. Приведите ваш js код.

#3 arsenal

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

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

Отправлено 31 Январь 2012 - 09:50

function on_change_Summa_po_dogovoru()
{ if (document.getElementById('value1411').value=="%") {
	  var summa = document.getElementById('value921').value + ""; //Сумма по договору, преобразуем в текст
	  //Вычисляем аванс в рублях
	  document.getElementById('value1412').value=parseFloat(summa.replace(" ", ""))/100*document.getElementById('value930').value;}
  if (document.getElementById('value1410').value=="ежеквартально") {
	 //Преобразуем число в текстовую переменную
	 var summa = document.getElementById('value921').value + ""; //Сумма по договору, преобразуем в текст
	 //Вычисляем сумму периодичного платежа
	 document.getElementById('value922').value=parseFloat(summa.replace(" ", ""))/document.getElementById('value1409').value*3;}
  else if (document.getElementById('value1410').value=="ежемесячно") {
	 //Преобразуем число в текстовую переменную
	 var summa = document.getElementById('value921').value + ""; //Сумма по договору, преобразуем в текст
	 //Вычисляем сумму периодичного платежа
	 document.getElementById('value922').value=parseFloat(summa.replace(" ", ""))/document.getElementById('value1409').value;}
  else document.getElementById('value922').value=0;
};

Сообщение отредактировал arsenal: 31 Январь 2012 - 09:51


#4 CbCoder

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

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

Отправлено 31 Январь 2012 - 10:15

Даже не знаю, скриншоты что ли приведите еще (после вычислений). Такое ощущение что где-то формат данных не тот. По идее заполнение поля через JS ничем не должно отличаться от заполнения руками, а следовательно после нажатия на Сохранить все должно сохраниться.

#5 arsenal

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

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

Отправлено 07 Февраль 2012 - 09:20

В РНР-код вставляю JS-код
echo "<script> confirm('Вы хотите восстановить договор ?') </script>";
Как далее в РНР-коде проверить какую кнопку нажали? И возможно ли это в принципе?

#6 CbCoder

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

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

Отправлено 07 Февраль 2012 - 09:26

Невозможно в принципе. Дело в том что PHP у вас работает на сервере, до отправки страницы в браузер пользователя, а яваскрипт - уже после, в самом браузере. Это разные среды выполнения.

#7 arsenal

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

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

Отправлено 03 Март 2012 - 12:19

Просмотр сообщенияarsenal (30 Январь 2012 - 21:52) писал:

Версия 195, ревизия от 25.01.12.
При редактировании записи при изменении поля1 через вычисление JS меняю значение поля2, в поле2 появляется новое значение, т.е. вычисление срабатывает. Однако при сохранении записи поле2 сохраняется пустым. Т.е. фактически новое значение поля2 при вычислении JS в базу не записывается. Приходится то же самое вычисление дублировать в РНР.
Так и должно быть или я что-то не так делаю. То же самое было и в версии 194.

Просмотр сообщенияРазработчик (31 Январь 2012 - 10:15) писал:

Даже не знаю, скриншоты что ли приведите еще (после вычислений). Такое ощущение что где-то формат данных не тот. По идее заполнение поля через JS ничем не должно отличаться от заполнения руками, а следовательно после нажатия на Сохранить все должно сохраниться.
В результате экспериментов определил, что это происходит из-за кода JS, который находится в поле2
$().ready(function() {
$('#value922').attr("disabled","disabled");
});
Этот код нужен для того, чтобы в режиме редактирования поле2 было видимым, но не редактируемым. Если этот код убрать, то все работает. Из-за чего это может быть?

#8 arsenal

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

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

Отправлено 05 Март 2012 - 09:34

?

#9 arsenal

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

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

Отправлено 05 Март 2012 - 15:44

Будет какой-нибудь ответ?

#10 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 05 Март 2012 - 20:43

Просмотр сообщенияarsenal (03 Март 2012 - 12:19) писал:

В результате экспериментов определил, что это происходит из-за кода JS, который находится в поле2
$().ready(function() {
$('#value922').attr("disabled","disabled");
});
Этот код нужен для того, чтобы в режиме редактирования поле2 было видимым, но не редактируемым. Если этот код убрать, то все работает. Из-за чего это может быть?
Если не заблуждаюсь, данные из отключенного элемента не передаются при отправке формы. Попробуйте перехватить событие submit кнопки Сохранить
$(".button edit").click(function(){
	$('#value922').attr("disabled","");
});
Может быть заработает.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#11 arsenal

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

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

Отправлено 06 Март 2012 - 09:00

А что должен делать этот код и когда он срабатывает?

#12 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Март 2012 - 10:26

Просмотр сообщенияarsenal (06 Март 2012 - 09:00) писал:

А что должен делать этот код и когда он срабатывает?
срабатывает при нажатии на кнопку Сохранить (элемент с классом .button edit)- поле value922 становится редактируемым
после чего должен отработать код, связанный с событием submit, которое должно захватить данные из вышеназванного поля и передать его в базу

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#13 arsenal

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

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

Отправлено 06 Март 2012 - 12:21

Я правильно пониаю: сначала я пишу свой код
$().ready(function() {
$('#value922').attr("disabled","disabled");
});
И ниже ваш
$(".button edit").click(function(){
	$('#value922').attr("disabled","");
});
И затем вставляю функцию submit , в которой и будет код, который переносит данные в базу

Сообщение отредактировал arsenal: 06 Март 2012 - 12:23


#14 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Март 2012 - 13:30

Вставляете только Ваш и мой, submit уже связан с кликом по кнопке.
Ваш отработает после загрузки страницы - поле станет неактивным.
При клике на кнопке отработает второй скрипт - поле станет активным.
Затем отработает скрипт, который связан с кнопкой, прописанный в программе - данные уйдут на сервер и должно вернуться измененное значение поля value922.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#15 arsenal

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

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

Отправлено 06 Март 2012 - 13:48

В итоге получился такой код
if (document.getElementById('value978').value=="ТО")
	 display_field(922, 1);
else
	 display_field(922, 0);
$().ready(function() {
$('#value922').attr("disabled","disabled");
});
 
$(".button edit").click(function(){
$('#value922').attr("disabled","");
});
Все равно не работает.
Т.е. в режиме редактирования поле становится неактивным, при изменении в поле1, в поле922 прописывается сумма (она отображается в неактивном поле), нажимаю "Сохранить" - в поле922 ничего не сохраняется.
Может быть в Вашем коде attr должен быть другой? (disabled вроде как неактивен)

#16 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Март 2012 - 14:21

попробуйте вместо

$('#value922').attr("disabled","");
использовать

$('#value922').removeAttr('disabled');


Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#17 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Март 2012 - 14:24

как передаете в поле value922

значение?


Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#18 arsenal

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

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

Отправлено 06 Март 2012 - 14:29

Просмотр сообщенияandibrag (06 Март 2012 - 14:21) писал:

попробуйте вместо

$('#value922').attr("disabled","");
использовать

$('#value922').removeAttr('disabled');

Не помогло.
Значение передаю через
document.getElementById('value922').value=ХХХ

В принципе несложно продублировать это вычисление и в PHP, о чем я писал в начале темы. Но все таки охота докопаться до истины.

Сообщение отредактировал arsenal: 06 Март 2012 - 14:35


#19 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Март 2012 - 14:43

попробуйте передать значение повторно в функции после
$('#value922').removeAttr('disabled');
бред, но кто знает

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#20 arsenal

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

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

Отправлено 06 Март 2012 - 15:05

То же не помогло. Все равно спасибо за помощь!





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

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