如果修改.txt使用 JQUERY AJAX 调用加载文件,则文本区域将不起作用


load .txt file with JQUERY AJAX call to a textarea won't work if modified

我正在尝试在<textarea>中加载.txt文件。

.txt网址由用户选择,并带有<select>

问题是当文本区域中的文本更改时。

我的函数仅在文本区域干净时才有效。

你能帮我吗?

提前致谢;)

话筒

.HTML

<label for="text-template">Text selector:</label>
<select name="text-template" class="select" id="text-template">
    <option value="test1.txt" selected>test.txt</option>
    <option value="test2.txt" selected>test2.txt</option>
    <option value="test3.txt" selected>test3.txt</option>
                </select>
                <div id="loadtext" class="loadtext" onclick="loadFileAsText()"><i class="fa fa-clipboard"></i>Load Text</div>
<textarea name="corpo" type="text" class="textarea" id="corpo" wrap="hard" placeholder="Insert text" required></textarea>

简讯

function loadFileAsText()
{
    alert ($("#text-template").val()),   
    $.ajax({
           url : $("#text-template").val(),
           cache : false,
           async: false,
           ifModified : false,
           dataType: "text",
           success : function (data) {
               $("#corpo").html(data);
           }
       });
}

:)

文本区域不包含 HTML。在 textarea 元素上调用 .html() 是无效的,应该失败(但话又说回来,jQuery 从来没有太关注它"应该"做的事情......

请改用.val()来设置文本区域的值。

文本区域的 HTML 内容是其默认值。仅当显示的值是默认值时,以编程方式更改它才会反映在 UI 中。

请改用val()

添加

$("#text-template").val("");

在 ajax 调用之前清除文本区域并使用 val() 而不是 html() 来设置值。

我确实注意到,如果我键入某些内容,文本不会更改,并且在尝试更改文本区域之前清除文本区域会修复它。这仅在使用 .html() 时发生。如果你使用 .val(),你甚至不必清除文本区域。