JavaScript无法从文本区域中获取更改

3
我想从一个div容器中获取所有的HTML,将其放入隐藏字段的值中,然后以相同的CSS样式向用户显示,但不显示textarea标签。
我想显示来自文本字段(textarea)的值,而不是textarea。到目前为止都很好!
但当我更改textarea中的信息时,我的javascript代码无法获取该字段中的新信息。
我的代码有什么问题吗?
<!DOCTYPE html>
<html>
    <head>
        <title>Test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script src="//code.jquery.com/jquery-1.10.2.min.js"></script>
    </head>
    <body>
        <?php
        if(isset($_POST['save'])){
            $scrita = $_POST['hid'];
            $scritaInsert = strip_tags($scrita, '<p><n><nz><font><bl><br><r><chh>');
            echo $scritaInsert;
            exit; //just for the test
        }
        ?>
        <form method="POST">
            <input type="submit" name="save" class="btn-style" value="Save" id="submitContainer"/>
            <input type="hidden" name="hid" id="hid"/>
        </form>
        <div id="container">
            <p style="text-align: center;font-weight: bold;font-size: 23px;color: black;">CocaCola</p>
            <p style="text-align: center; color: black; font-size:16px; text-decoration: underline;">
                The address
            </p>

            <p style="font-weight: bold; color: black;">
                To: <textarea name="do" style="width: 920px; max-width: 100%; height: 18px;">CocaCola Company</textarea>
            </p>

            <p style="font-weight: bold; color: black;">
                Attention: <textarea  name="vnimanieto" style="width: 830px; max-width: 100%; height: 18px;">CocaCola Company</textarea>
            </p>

            <p style="text-align: center;font-weight: bold;font-size: 19px;color: black;">
                CONTRACT<br>
            <n style="text-align: center;font-size: 16px;color: black;">
                For transport
            </n><br>
            <nz style="text-align: center;"><textarea name="nomer" style="width: 60px; max-width: 100%; height: 18px;">1737</textarea>
                Date:<textarea name="date" style="width: 90px; max-width: 100%; height: 18px;" id="date">25.05.2016</textarea>
            </nz>
        </p>
    </div>
    </body>
</html>
<script type="text/javascript">
    $('#submitContainer').click(function(){
         $('.picker').html('');
        var content = $('#container').html();
        $('#hid').val(content);
    });
</script>
3个回答

0

我认为你应该使用方法 text() 而不是 html(),因为 html() 将复制包括HTML标记在内的所有文本,但是 text() 只会复制实际文本。

请查看此 fiddle


当我在JavaScript代码中将HTML更改为文本时,我会失去CSS样式,并且当我在文本区域中放入新值时,结果是相同的(代码获取现有值而不是新值)。 - Borislav Razvanski
我可以帮你更新代码,希望这次能够解决你的问题,兄弟 :) - Felix Fong

0

我认为您的问题可能与HTML斜杠的类型有关:

请尝试:

String.prototype.stripSlashes = function(){
    return this.replace(/\\(.)/mg, "$1");
}

$('#submitContainer').click(function(){
    $('.picker').html('');
    var content = $('#container').html();
    $('#hid').val(content.stripSlashes());
});

结果是一样的。当我在文本区域中输入新信息时,代码不会获取它并显示文本区域中的旧信息。 - Borislav Razvanski

0

我已经将我的JavaScript更改为以下代码,现在它可以正常工作:

<script type="text/javascript">
    $('#submitContainer').click(function(){
        $('.picker').html('');
        $("textarea").each(function() {
            $(this).text($(this).val());
        });
        var content = $('#container').html();
        $('#hid').val(content);
    });
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接