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


Не срабатывает проверка полей при сохранении


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

#1 nk

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

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

Отправлено 08 Ноябрь 2012 - 03:33

использую такой код

if (document.getElementById("edit_value17").value != "")
{
$status_id = document.getElementById("value17").value;
$.ajax({
  type: "POST",
  url: "user_button.php",
  data: { id: '1', line: '{$line_id}', status_id: $status_id },
  success: function(msg){
   display_field(304, msg == 1);
  }
});
}
function checkFields()
{
$status_id = document.getElementById("value17").value;
$.ajax({
  type: "POST",
  url: "user_button.php",
  data: { id: '1', line: '{$line_id}', status_id: $status_id },
  success: function(msg){
   if (msg == 1 && document.getElementById('value304').value == 0)
   {
	alert('Поле "Причина отказа" не заполнено!');
	return false;
   }
  }
});
};
addHandler(document.getElementById("edit_form"), "onsubmit", checkFields)

Поле 304 отображается когда надо (при определенном значении поля 17), но при сохранении не ругается, если 304 пустое. Такое ощущение, что ajax пропускается мимо: пробовал простой алерт в самое начало success - не выскакивает, в начало checkFields() - выскакивает. Если перед ajax просто проверить заполнение поля - срабатывает, но мне необходимо ещё знать, надо ли его вообще проверять.

Сообщение отредактировал nk: 08 Ноябрь 2012 - 03:35


#2 Гость_Roman_*

  • Гости

Отправлено 08 Ноябрь 2012 - 07:57

$status_id - некорректно. Переменные со знаком $ актуальны для php, но не для JavaScript, где данный знак используется в основном для объектов Jquery. Попробуйте просто status_id.

#3 nk

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

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

Отправлено 08 Ноябрь 2012 - 08:57

javascript
function checkFields()
{
status_val = document.getElementById("value17").value;
alert(status_val);
$.ajax({
  type: "POST",
  url: "user_button.php",
  data: { id: '1', line: '{$line_id}', status_id: status_val },
  success: function(msg){
   alert(msg);
   if (msg == 1 && document.getElementById('value304').value == 0)
   {
    alert('Поле "Причина отказа" не заполнено!');
    return false;
   }
  
  }
});
};
addHandler(document.getElementById("edit_form"), "onsubmit", checkFields)

доп. действие
$status_id = $_REQUEST['status_id'];
$data = data_table("Статусы обращений по видам", "id=".$status_id);
echo $data['Это отказ'];
exit;

первый алерт показывает id стаутса, все ок, но в кнопку он почему-то не попадает, ошибка: Fatal error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 1' at line 1
SELECT * FROM f_data3 WHERE id= LIMIT 1
in /home/helpun/public_html/include/functions2.php on line 25

если использовать $status_id, то в кнопку id передается и запрос выполняется

#4 Гость_Roman_*

  • Гости

Отправлено 08 Ноябрь 2012 - 09:04

Может status_val вне области видимости в ajax. Попробуйте
var status_val = document.getElementById("value17").value;


#5 nk

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

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

Отправлено 08 Ноябрь 2012 - 09:16

все также

в другом месте использую подобную конструкцию - все прекрасно, только там событие другое

$("#value112").bind("change", function()
{
if (document.getElementById("edit_value112").value != "")
{
  customer_val = document.getElementById("value112").value;
  customer_type = document.getElementById("value381").value
  $.ajax({
   type: "POST",
   url: "user_button.php",
   data: { id: '4', line: '{$line_id}', customer_type: customer_type, customer_id: customer_val },
   success: function(msg){
	eval(msg);
   }
  });
}
else
{
  document.getElementById("value113").value = "";
  ...
}
});

$customer_id = $_REQUEST['customer_id'];
$customer_type = $_REQUEST['customer_type'];
switch ($customer_type)
{
case 1:
  $table_name = "Клиенты физлица";
  break;
case 2:
  $table_name = "Контрагенты";
  break;
default:
  exit;
}
$data = data_table($table_name, "id=".$customer_id);
$phone_m = $data['Телефон моб.'];
...
echo "document.getElementById('value113').value = '$phone_m';";
...
exit;

Сообщение отредактировал nk: 08 Ноябрь 2012 - 09:19


#6 Гость_Roman_*

  • Гости

Отправлено 08 Ноябрь 2012 - 09:21

Странно. Возможно только то, что где-то в названии переменной вкралась другая буква. Внешне код абсолютно корректен.

#7 nk

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

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

Отправлено 08 Ноябрь 2012 - 09:22

Просмотр сообщенияRoman (08 Ноябрь 2012 - 09:21) писал:

Странно. Возможно только то, что где-то в названии переменной вкралась другая буква. Внешне код абсолютно корректен.

копипастил уже, бекап посмОтрите? :)

#8 Гость_Roman_*

  • Гости

Отправлено 08 Ноябрь 2012 - 09:28

Попробуйте сначала вставить в доп. действие
print_r($_POST);
die();
И посмотрите какие переменные передаются.

#9 andibrag

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

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

Отправлено 08 Ноябрь 2012 - 14:49

А не может это быть связано с той же проблемой, которая была у Вас при отображении и сокрытии полей? Я по отработку скрипта до полного построения страницы? http://clientbase.ru...indpost&p=15532

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

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

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






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

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