jQuery追加到窗体丢失解码实体

时间:2019-04-18 13:03:01

标签: jquery forms

我需要向表单中添加一些动态输入,问题是使用jquery append方法会破坏html实体。

例如,尝试在文本区域内写入I <3 JQUERY。 Textarea是使用CK编辑器5初始化的。我也尝试过SUMMERNOTE,但没有成功。

在我的示例中,通过POST aa_a传递的变量被附加到post(我需要的是)上。 aa变量是原始变量(仅在此示例中作为目的传递)。

aa已正确发布

aa_a已解码! (不想要这个!)

我想以附加值aa_a传递aa

enter image description here

我需要使用附加到原始表单功能的JQUERY ,因为我已经按组动态输入(input-1的textarea-1,input-2的textarea-2等)。

删除我的示例只是为了给您一个示例。

代码示例:

<?php

header('Content-Type: text/html; charset=utf-8');
if ( isset($_POST) ) {
    var_dump($_POST);
}

?>

<!DOCTYPE html>
<html>
  <head>
  </head>
<body>

<form method="post" id="form" action="">
    <textarea name="aa" class="aa"><?php if isset($_POST) { echo $_POST['aa']; } ?></textarea>
    <input id="btn" type="submit" value="send">
</form>

    <script src="https://code.jquery.com/jquery-3.4.0.js" integrity="sha256-DYZMCC8HTC+QDr5QNaIcfR7VSPtcISykd+6eSmBW5qo=" crossorigin="anonymous"></script>

    <script src="ckeditor.js"></script>

<script>

$(document).ready(function() {
    $("#btn").on("click", function(e) {
        e.preventDefault();
        editor.updateSourceElement();

        //alert($(".aa").val());
        //alert(editor.getData());

        var form = $("#form");
        form.append($('<textarea class="hidden" name="aa_a">'+ $(".aa").val() +'</textarea>') );
        form.submit();
    });

});

    ClassicEditor.create( document.querySelector( '.aa' ), {
            // toolbar: [ 'heading', '|', 'bold', 'italic', 'link' ]
        } )
        .then( editor => {
            window.editor = editor;
        } )
        .catch( err => {
            console.error( err.stack );
    } );

</script>
</body>

</html>

1 个答案:

答案 0 :(得分:0)

我找到了一种解决方法:

form.append($('<textarea class="hidden" name="aa_a">'+ $(".aa").val().replace(/&/g, "&amp;") +'</textarea>') );

但是如果我用以下形式写:

Commercial & is equal to &amp;

开机自检后,我进入表单:Commercial & is equal to &