Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.02.2013, 04:29
Новичок на форуме
Отправить личное сообщение для lar_i_sa Посмотреть профиль Найти все сообщения от lar_i_sa
 
Регистрация: 20.02.2013
Сообщений: 5

Проблема использования кавычек
У меня пока мало знаний. Перерыл инет, но ответ так и не нашел, очевидно он очень простой, но найти его не могу. Суть проблемы - Столкнулся с необходимостью замены кавычек (" ") на кавычки (« ») в введенном тексте. Точнее проблема в месте использования обработчика события при переходе скрипта между PHP и JavaScript (строка отмечена в коде скрипта). Для краткости решил использовать регулярное выражение, но никак немогу разобраться с использованием кавычек в том месте, где они исмользуются как символ, а не как управляющая конструкция. По логике их нужно экранировать пробывал слешем (\) не помогает скрипт не работает пытаюсь просмотреть скрипт через стандартный встроенный просмотр кода в Mozilla так там видно что текст скрипта сбивается в месте использования символа кавычки. Помогите пожалуйста. Уже второй день бьюсь и никак!!!! Подскажите где я ошибся в коде? вот фрагмент моего кода HTML+PHP+Java:

<input type="image"  src="hometask_ok.png"
  alt="Submit" name="button_Edit" 
  onClick="javascript: 
      var InputValue=prompt('TASK:','');

// ----проблема  с кавычками в этой  строке!!!  (кавычки сейчас не экранированы!!!!)    
var InputValueNew = InputValue.replace(/"([^"]+)"/g,'«$1»'));
//-----   
   var URL_Argument='Param'+'=' + InputValueNew;
    ajax_get_info_new( 'status_save_lessall_33',
     '<?php echo $NameFileURL_zz['ajx_save_lesson.php']; ?>',
     URL_Argument);
">
Ответить с цитированием
  #2 (permalink)  
Старый 20.02.2013, 08:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,147

Сообщение от lar_i_sa
var InputValueNew = InputValue.replace(/"([^"]+)"/g,'«$1»'));
может не кавычки а скобка?
Вариант ...
<meta charset="utf-8" />

var InputValueNew = InputValue.replace(/\u0022([^\u0022]+)\u0022/g,'«$1»');
Ответить с цитированием
  #3 (permalink)  
Старый 20.02.2013, 10:28
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

рони, все это находится внутри атрибута onclick )))
Следующий шаг - засунуть библиотеку jquery в атрибут body onload ))))
Ответить с цитированием
  #4 (permalink)  
Старый 20.02.2013, 10:33
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

lar_i_sa,
<!--где-то в шапке или в отдельном файле-->
<script>
function iamcoolcoder(){
    var InputValue=prompt('TASK:','');
    var InputValueNew = InputValue.replace(/"([^"]+)"/g,'«$1»'));

    var URL_Argument='Param'+'=' + InputValueNew;
    ajax_get_info_new( 'status_save_lessall_33',
     '<?php echo $NameFileURL_zz['ajx_save_lesson.php']; ?>',
     URL_Argument);
}
</script>
<input type="image" src="hometask_ok.png" alt="Submit"
    name="button_Edit" onclick="iamcoolcoder()">

Последний раз редактировалось danik.js, 20.02.2013 в 12:39.
Ответить с цитированием
  #5 (permalink)  
Старый 20.02.2013, 10:35
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от lar_i_sa
HTML+PHP+Java
И где тут Java ?
Ответить с цитированием
  #6 (permalink)  
Старый 20.02.2013, 12:02
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Цитата:
// ----проблема с кавычками в этой строке!!! (кавычки сейчас не экранированы!!!!)
07 var InputValueNew = InputValue.replace(/"([^"]+)"/g,'«$1»'));
А в чем заключается задача трансформации строки?(И зачем?
Приведите пару - тройку проблемных входных строк и их же, получаемых на выходе InputValue.replace (в идеале)
Ответить с цитированием
  #7 (permalink)  
Старый 20.02.2013, 12:32
Новичок на форуме
Отправить личное сообщение для lar_i_sa Посмотреть профиль Найти все сообщения от lar_i_sa
 
Регистрация: 20.02.2013
Сообщений: 5

Ура заработало!!!
Использовано предложение от danik.js с вызовом функции.
В принципе оно и логично разделить максимально блоки HTML и JavaScript кода, тогда автоматом уменьшается проблема при переходах
HTML-JavaScript, когда код JavaScript находится внутри тега <INPUT> (как в моем фрагменте кода).
Мне уже приходилось сталкиваться с проблемой использования кавычек (одинарных и двойных , а не скобки как упоминал Рони), но вот при использовании их в регулярном выражении, которое прописано ВНУТРИ!!! тега <INPUT> в коде JavaScript вылезла описанная выше - проблема.
ВЫВОД - проблема решилась не влоб, а кардинально - вызов функции с кодом JavaScript вместо написания кода внутри тега. Кстати и еще одного "зайца убил", теперь при AJAX обработке возвращаемый текст кода тега <INPUT> стал меньше (после сохранения в базу введенного значения), мелочь а приятно .
А про "где Java в HTML+PHP+Java ...ну наверное я не верно выразился. Очевидно мне надо было написать: JavaScript а не Java - прошу прощение если запутал, пока у меня знаний маловато.
Всем большое спасибо за помощь!
Ответить с цитированием
  #8 (permalink)  
Старый 20.02.2013, 12:46
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А что если юзер нажмет в окне ввода Отмена? В InputValue оказется null, у которого нет метода replace, и возникнет ошибка.

var inputValue = prompt('Бла');
if (!inputValue) {
    // если нет значения, выходим.
    return;
}
inputValue = inputValue.replace(/"([^"]+)"/g,'«$1»');
...
Ответить с цитированием
  #9 (permalink)  
Старый 20.02.2013, 14:07
Новичок на форуме
Отправить личное сообщение для lar_i_sa Посмотреть профиль Найти все сообщения от lar_i_sa
 
Регистрация: 20.02.2013
Сообщений: 5

Сообщение от Deff Посмотреть сообщение
А в чем заключается задача трансформации строки?(И зачем?
Приведите пару - тройку проблемных входных строк и их же, получаемых на выходе InputValue.replace (в идеале)
Проблема не в самих строках, а втом что символы кавычек при исполнении скрипта сервером транслируются по разному. А точнее команды с использованием например регулярного выражения записанные внутри тега INPUT и соответственно записанные отдельно, например в начале всего скрипта внутри функции ......<scipt> function ().....
Для правильности выполнения таких скриптов , как я понял текст кода Java Script тега например, <INPUT> будет немного отличаться от текста кода внутри ..<scipt> function ()....
вот такое значение введенное пользователем:
книга с названием "В путь" находилась на полке....
вызывает ошибку. А если убрать кавычки или их заменить например на символы <>:
книга с названием <В путь> находилась на полке....
то все работает
Вобще задача трансформации вылезла из за того, что после того как введен текст содержащего кавычки (двойные " или одинарные ') не выводился НА ЭКРАН ИЗА ОШИБКИ В СКРИПТЕ возникающей после ответа AJAX обработчика, возвращающего фрагмент нового тега INPUT в кототром значением по умолчанию является ранее введенное значение. и вот в тех местах где это значение содержит кавычки (я их пробовал экранировать - но не помогло) возникает ошибка. Очевидно я запутался в синтаксисе но задучу нужно было срочно решать любым доступным способом. В качестве решения была выбрана идея заменить символ кавычки на код HTML сущности. может и сложно но так заработало правда с использованием совета использования JavaScript в function () за пределами тега <INPIT>
Подведу маленький итого: в чем проблема с кавычками я так и понял, НО задачу решил.
Если кому интересно (мне интересно) подскажите как правильно экранировать или заменять символы на их сущности при записи текста кода JavaScript внутри HTML тега INPUT (в инете я так и не смог найти ответ).

Последний раз редактировалось lar_i_sa, 20.02.2013 в 14:39.
Ответить с цитированием
  #10 (permalink)  
Старый 20.02.2013, 14:16
Новичок на форуме
Отправить личное сообщение для lar_i_sa Посмотреть профиль Найти все сообщения от lar_i_sa
 
Регистрация: 20.02.2013
Сообщений: 5

Сообщение от danik.js Посмотреть сообщение
А что если юзер нажмет в окне ввода Отмена? В InputValue оказется null, у которого нет метода replace, и возникнет ошибка.
Списибо за подсказку, пригодилось. Правда немножко по другому. При нажатии кнопки Отмена переменная inputValue получает значение равное тексту null а не пустому (незнаю почему) поэтому я использовал условие
if (inputValue==null  ) {
    // если нет значения, выходим.
    return;
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема использования библиотек1 0931454574 jQuery 1 30.06.2011 15:02
Ошибка в jQuery 1.5.1. Не понимаю в чем проблема? viatcheslav AJAX и COMET 0 16.05.2011 11:38
Проблема с CSS COKOJIOB (X)HTML/CSS 5 04.08.2009 14:19
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47