【问题标题】:Ajax not seeing textarea valueAjax 看不到 textarea 值
【发布时间】:2016-08-17 11:29:48
【问题描述】:

我的页面上有一个文本区域输入,我想使用 AJAX 将其发布到服务器。 AJAX 调用很好,但是,它不会看到文本区域内的值。

我的 HTML:

<div class="promptBody">
    <div id="promptText" onclick="replaceWithInput(this)">
        <p class="promptBody"><div id="prompty">{{prompt.prompt|linebreaks}}</div></p>
    </div>
    <form id="promptUpdateForm">
        <div id="promptInput">
            <p><textarea class="input" cols="40" id="id_prompt" name="prompt" placeholder="Prompt" rows="10"></textarea></p>
            <p><input class="submit" type="submit" name="submit" id="submit" value="Edit Prompt" /></p>
        </div>
    </form>
</div>

<script type="text/javascript">
    $(document).ready(function() {
        $(document).on('submit', '#promptUpdateForm', function(e) {
            e.preventDefault();
            $.ajax({
                type: 'POST',
                url: '/apps/litprompt/a/{{prompt.id}}/update/',
                data: {
                    'prompt': $('#id_prompt').val(),
                    csrfmiddlewaretoken: $('input[name="csrfmiddlewaretoken"]').val(),
                },
                success: function(json) {
                    $('#promptText').html(json.prompt_data);
                    var promptText = document.getElementById('promptText');
                    var promptInput = document.getElementById('promptInput');
                    promptText.style.display = 'block';
                    promptInput.style.display = 'none';
                }
            });
        });
    });
</script>

如果我将数据中的 ajax 代码更改为 'prompt': 'blah',它就可以正常工作。但是每次我使用 'prompt': $('#id_prompt').val() 发布时,它都是一个空值。

【问题讨论】:

  • 你忘了关闭文本区域,它们不是自动关闭的,需要一个&lt;/textarea&gt;关闭标签
  • 对不起,我在重新格式化问题代码时忘记了 ,但它在实际代码中,但仍然无法正常工作。我重新格式化了问题以更正它。

标签: javascript jquery html ajax django


【解决方案1】:

textarea HTML 元素不是自动关闭的。它必须由&lt;/textarea&gt; 关闭。

如下:

<div class="promptBody">
    <div id="promptText" onclick="replaceWithInput(this)">
        <p class="promptBody"><div id="prompty">{{prompt.prompt|linebreaks}}</div></p>
    </div>
    <form id="promptUpdateForm">
        <div id="promptInput">
            <p><textarea class="input" cols="40" id="id_prompt" name="prompt" placeholder="Prompt" rows="10"></textarea></p>
            <p><input class="submit" type="submit" name="submit" id="submit" value="Edit Prompt" /></p>
        </div>
    </form>
</div>

【讨论】:

  • 对不起,我在重写问题代码时忘记了 。我确实有一个 ,但它仍然坏了。我更新了问题以更正此问题。
  • 在这种情况下,您确定您没有在别处定义id_prompt 吗?因为在jsfiddle.net/sbra8y8t 上的一个简单模型似乎可以正常工作。
  • 啊!我在同一页面上有一个新的提示表单,它正在生成另一个具有相同 ID 的文本区域。做到了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
相关资源
最近更新 更多