Как я могу передать "" "на вызов функции Javascript, сделанный внутри HTML-тега? - PullRequest
1 голос
/ 25 марта 2011

У меня есть функция Javascript (названная insert_formatText), которая вставляет текст в указанную область текста.Эта функция принимает 4 параметра: - opentag (открытый тег) - closetag (закрытый тег) - formid (значение атрибута id формы) - elementid (значение атрибута id текстового поля)

Моя функцияработает очень хорошо, за исключением случаев, когда вы устанавливаете opentag как "" "и closetag как" "".В этом случае он просто ломается.

<a href="javascript:;" onclick="insert_formatText('"""', '"""', 'foo', 'bar');">INSERT TRIPLE-QUOTES</a>

Extra Detail

Я фактически использую PHP для циклического прохождения массива, содержащего значения opentag и closetag в качестве пары ключ => значение.В цикле я передаю эти значения в функцию:

function editorButton($pre, $suf, $fid, $eid, $label){
    $str = <<<EOT
            <a href="javascript:;" onclick="insert_formatText('$pre', '$suf', '$fid', '$eid');">$label</a>
EOT;
    return $str;
}

Итак, мой вопрос: есть ли способ заставить это работать для двойных кавычек без особых изменений?Или мне нужно будет найти другой метод для создания этих кнопок?

Ответы [ 4 ]

1 голос
/ 25 марта 2011

Вы можете избежать кавычек, используя обратную косую черту следующим образом:

<a href="javascript:;" onclick="insert_formatText('\"\"\"', '\"\"\"', 'foo', 'bar');">INSERT TRIPLE-QUOTES</a>
0 голосов
/ 25 марта 2011

Вы должны закодировать ваши кавычки как сущности в html.т.е.

<a href="javascript:;" onclick="insert_formatText('&quot;&quot;&quot;', '&quot;&quot;&quot;', 'foo', 'bar');">INSERT TRIPLE-QUOTES</a>

Для этого вы можете использовать функцию PHP htmlentities .

0 голосов
/ 25 марта 2011

Вы должны добавить косую черту:

function editorButton($pre, $suf, $fid, $eid, $label){
    $pre = addslashes($pre);
    $suf = addslashes($suf);
    $str = <<<EOT
            <a href="javascript:;" onclick="insert_formatText('$pre', '$suf', '$fid', '$eid');">$label</a>
EOT;
    return $str;
}

тогда это даст вам:

<a href="javascript:;" onclick="insert_formatText('\"\"\"', '\"\"\"', 'foo', 'bar');">INSERT TRIPLE-QUOTES</a>
0 голосов
/ 25 марта 2011

Ну, вы внутри тега, и вы открыли строку как ". Так что вам нужны экранирования

<a href="javascript:;" 
   onclick="insert_formatText('\"\"\"', '\"\"\"', 'foo', 'bar');"
>INSERT TRIPLE- QUOTES</a>

Или наоборот, вы можете попробовать это

<a href="" onclick='insert_formatText("\"\"\"", "\"\"\"" "foo", "bar");'>INSERT TRIPLE- QUOTES</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...