换行符在HTML提交中消失

时间:2011-07-20 12:45:55

标签: javascript jquery asp.net html

我遇到的问题是换行符在表单提交路径中消失了。这是我的情景。

我在html网页上有一个多行文本框(2行)。 提交表单时,jquery使用

检索文本框的值
$("#txtboxid").val();

当我使用Chrome的调试器检查值时,我可以看到换行符在那里。

(测试数据为a\r\nb\r\nc\r\nd

然后让jQuery使用以下JavaScript发布数据。

function postData(to, params) {
    var myForm = document.createElement("form");
    myForm.method = "post";
    myForm.action = to;
    for (var k in params) {
        var myInput = document.createElement("input");
        myInput.setAttribute("name", k);
        myInput.setAttribute("value", params[k]);
        myForm.appendChild(myInput);
    }
    document.body.appendChild(myForm);
    myForm.submit();
    document.body.removeChild(myForm);
}

当我使用Request.Form中的NameValueCollection检查ASP.NET中的发布值时,似乎没有任何换行符或换行符。

eg = string textboxValue = Request.Form["myTextBox"];

任何想法为什么?

2 个答案:

答案 0 :(得分:4)

这是预期的行为:您从多行<textarea>元素中获取数据并将其放在单行<input>元素中。因此,会丢失换行符。

尝试创建<textarea>元素而不是<input>元素。例如,使用jQuery:

function postData(to, params)
{
    var myForm = $("<form>").attr({
        method: "post",
        action: to
    });
    $.each(params, function(key, value) {
        $("<textarea>").attr("name", key).val(value).appendTo(myForm);
    });
    myForm.appendTo("body").submit().remove();
}

答案 1 :(得分:1)

您的数据来自多行文本框,但您正在创建INPUT元素,我想不接受换行符。这可能是一个问题。