Почему IF так не срабатывает?(скриншот)

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
Если создать 2 IFа отдельных с кодом "{-Variable.ok_post_text-}" != "" и "{-Variable.ok_post_img-}" != "" то проверка на пустоту срабатывает, но если сделать это в одном IFе как на скриншоте, то не получается.
 

Вложения

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
вот не повкрю что человек тупо зашёл на сайт для того чтобы повторить тему, неужели нельзя заметить обсуждение этого
 

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
У меня пока еще аккаунт клиента не подтвержден и я не могу посмотреть что там, можно узнать о чем там пишется?
нельзя заметить обсуждение этого
Можно ссылку?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 689
Баллы
113
Если есть вероятность наличия в проверяемом тексте кавычек - двойних или одинарных, без разницы, то переменную обрабатывайте с помощью экшена Обработка текста - Подготовка JavaScript, в результате чего кавычки заэкранируются и IF будет работать корректно.
это тема копия вашей.
 
  • Спасибо
Реакции: bladder

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113
Если создать 2 IFа отдельных с кодом "{-Variable.ok_post_text-}" != "" и "{-Variable.ok_post_img-}" != "" то проверка на пустоту срабатывает, но если сделать это в одном IFе как на скриншоте, то не получается.
"{-Variable.ok_post_text-}" != "" && "{-Variable.ok_post_img-}" != ""
 
  • Спасибо
Реакции: Santorini

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
"{-Variable.ok_post_text-}" != "" && "{-Variable.ok_post_img-}" != ""
Спасибо, но так я пробовал и так не работает. Там вон выше мне подсказали что надо экранировать кавычки и так сработало, хоть и не удобно т.к надо создать две новые переменные, чтоб другие две на пустоту проверить.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113
Спасибо, но так я пробовал и так не работает. Там вон выше мне подсказали что надо экранировать кавычки и так сработало, хоть и не удобно т.к надо создать две новые переменные, чтоб другие две на пустоту проверить.
неудобно? возможно. Но ты же понял, почему так надо?
 

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113
IF путает двойные кавычки из значения переменной с теми что используются в условии
верно. Стало быть экранирование нужно только тогда, когда в тексте эти кавычки могут быть. На моём опыте, подавляющее большинство сценариев обходится без экранирования
 
  • Спасибо
Реакции: bladder

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113
Если создать 2 IFа отдельных с кодом "{-Variable.ok_post_text-}" != "" и "{-Variable.ok_post_img-}" != "" то проверка на пустоту срабатывает, но если сделать это в одном IFе как на скриншоте, то не получается.
я, сейчас, смотрю на первый пост и пытаюсь понять, где там кавычки и как именно тебе помогло экранирование?)
 

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
я, сейчас, смотрю на первый пост и пытаюсь понять, где там кавычки и как именно тебе помогло экранирование?)
Сам не знаю, но без экранирования не работает :-) Я думал они там есть и заэкранировал, оно сработало и я не обратил сразу внимание на то что их там изначально не было.

upd
Оказывается он экранирует перенос строки и двоеточия и после этого срабатывает мой IF.
 

Вложения

  • 66,8 КБ Просмотры: 82
  • 20,8 КБ Просмотры: 83
Последнее редактирование:

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 366
Благодарностей
3 292
Баллы
113
При выполнении, макросы заменяются на текст в нём, содержащиеся в нём кавычки создают проблему.
Так как IF - это локальный JS (старой версии), то необходимо использовать экшен подготовки JavaScript:
Было: te\st'123"q\'w\"e
Станет: te\st\'123\"q\\'w\\"e
53343

53345
 

bladder

Пользователь
Регистрация
24.11.2019
Сообщения
68
Благодарностей
3
Баллы
8
При выполнении, макросы заменяются на текст в нём, содержащиеся в нём кавычки создают проблему.
Так как IF - это локальный JS (старой версии), то необходимо использовать экшен подготовки JavaScript:
Было: te\st'123"q\'w\"e
Станет: te\st\'123\"q\\'w\\"e
Так это не только на кавычки срабатывает получается, но и на двоеточия и пробелы?
 

Вложения

  • 20,8 КБ Просмотры: 82
  • 27,9 КБ Просмотры: 73

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 440
Благодарностей
8 672
Баллы
113
Так это не только на кавычки срабатывает получается, но и на двоеточия и пробелы?
Двоеточия и пробелы - нет, а переводы строки - да, экранируются Подготовкой JavaScript.
В вашем случае, видимо виноваты были именно переводы строки.

При сравнении в IF, текст нужно вытягивать в одну строку, иначе сравнение будет неправильным.
Подготовка JavaScript как раз и вытягивает в одну строку, в том числе.

Вот иллюстрация "неправильно" отрабатывающего IF, если есть перевод строки.

53370
 
Последнее редактирование:
  • Спасибо
Реакции: bladder

Dobriyk0t

Client
Регистрация
28.12.2016
Сообщения
65
Благодарностей
14
Баллы
8
Если создать 2 IFа отдельных с кодом "{-Variable.ok_post_text-}" != "" и "{-Variable.ok_post_img-}" != "" то проверка на пустоту срабатывает, но если сделать это в одном IFе как на скриншоте, то не получается.
Если сравниваете конкретные значения, то лучше используйте свой код с возвратом логического значения. Сколько раз убеждался, что так намного стабильнее работает
 
  • Спасибо
Реакции: bladder

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)