JQuery добавить на contenteditable добавляет невидимые символы - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть приглашение SQLite3 SQL, к которому можно добавить имя таблицы / столбца, щелкнув его в списке справа.
Ну, это то, что я хотел бы сделать. Я был вынужден отключить эту функцию из-за ошибки, которую не понимаю.

Если я ввожу запрос вручную, все работает. Но если я использую кнопку для добавления `table`, я получаю эту ошибку от SQLite:

в "SELECT * FROM` table` ": рядом с" FROM ": синтаксическая ошибка

Эта ошибка даже не возникает в добавленном тексте !!

Однако вход визуально одинаков. На консоли и в дереве HTML (инспектор) тоже. Никаких специальных символов не отображается.
Я мог проверить, есть ли невидимый символ благодаря небольшому раскрывающемуся списку, который позволяет мне получить доступ к предыдущим входам SQL. Ошибка остается после доступа к ошибочному вводу и запуска его снова.


Вот HTML и Javascript, чтобы вы могли видеть, что я хочу сделать, и в этом нет видимой разницы:

$('i').click(function() {
    $('#sql-input').append('`' + $(this).data('value') + '`');
});

$('#sql-form').submit(function(e) {
    e.preventDefault();
    console.log($("#sql-input").text());
    /*
        Here is the ajax request to execute the SQL
    */
});
<script src="http://code.jquery.com/jquery-1.12.4.min.js"></script>
<form id="sql-form" action="" method="post">
    <label for="sql-input">SQL PROMPT</label>
    <br />
    <div id="sql-input" style="height: 80px; width: 150px; border: solid 1px black;" contenteditable></div>
    <br />
    <input type="submit" value="send" />
    <button type="button" onclick="console.clear();">clear console</button>
</form>
<div class="list">
    <ul style="cursor: pointer;">
        <li><i data-value="table1">table1</i></li>
        <li><i data-value="col1_1">col1_1</i></li>
        <li><i data-value="col2_1">col2_1</i></li>
        <li><i data-value="col3_1">col3_1</i></li>
        <li><i data-value="table1">table2</i></li>
        <li><i data-value="col1_2">col1_2</i></li>
    </ul>
</div>

Что-то странное в том, что если я коснусь текста, введенного JQuery, ошибка исчезнет.

Что я уже пробовал:

удаление кавычек: `table` => table
используя $().text() или $().html() вместо $().append()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...