1

我正在我的页面客户端上创建文本框,就像这样..

  var _text = document.createElement("input");

        _text.setAttribute("type", "text");

        _text.setAttribute("id", "txtAsName" + num);

        _text.setAttribute("name", "txtAsName" + num);

在服务器端代码中,我检索表单上任何文本框的 ID(您可以添加 txtAsName1、txtAsName2、txtAsName3,然后删除所有客户端的 txtAsName2,因此在我的情况下,在回发期间获取表单左侧的任何文本框很重要)

我正在使用以下方法获取服务器端剩余文本框的 ID:

 string[] allFormKeys = Request.Form.AllKeys;

                    foreach (string key in allFormKeys)
                    {

                     Response.Write("Key Name: " +key + "<br/>");

                        if (key.StartsWith("txtAsName"))
                        {
                            txtBoxes.Add(key);
                        }
                    }

在 Firefox 中这工作正常,但在 IE8 Request.Form.AllKeys 中不返回文本框!我可以通过 Response.Write 看到这一点,在 Firefox 中我得到了文本框。

我检查了 html 中是否有 2 个表单标签,但事实并非如此

4

3 回答 3

1

Is it possible that you are forgetting to append the newly created element to your form?

<script>
var input1 = document.createElement("input");
input1.setAttribute("type", "text");
input1.setAttribute("name", "testing123");
input1.setAttribute("value", "i like cake");
document.getElementById("formid").appendChild(input1);
</script>
于 2012-07-03T19:24:31.390 回答
0

您没有在问题中说您将文本输入元素添加到什么。我使用了您的代码,确保将文本输入字段作为子项添加到表单元素内的某个位置,并且我肯定会看到它们被发布回服务器:

<div id="testDiv"></div>
<br />
<asp:Label ID="Label1" runat="server" />
<asp:Button runat="server" />
<script type="text/javascript">
    var num = 0;
    var _text = document.createElement("input"); _text.setAttribute("type", "text"); _text.setAttribute("id", "txtAsName" + num); _text.setAttribute("name", "txtAsName" + num);
    testDiv.appendChild(_text);
    num++;
    _text = document.createElement("input"); _text.setAttribute("type", "text"); _text.setAttribute("id", "txtAsName" + num); _text.setAttribute("name", "txtAsName" + num);
    testDiv.appendChild(_text);
    num++;
    _text = document.createElement("input"); _text.setAttribute("type", "text"); _text.setAttribute("id", "txtAsName" + num); _text.setAttribute("name", "txtAsName" + num);
    testDiv.appendChild(_text);
</script>

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Form.AllKeys.Length > 0)
        {
            string keys = string.Join(", ", Request.Form.AllKeys);
            Label1.Text = string.Format("Found {0} keys: {1}", Request.Form.AllKeys.Length, keys);
        }
        else
        {
            Label1.Text = "Form.AllKeys.Length == 0";
        }
    }

当我运行它然后单击按钮时,标签显示:

Found 6 keys: __VIEWSTATE, __EVENTVALIDATION, txtAsName0, txtAsName1, txtAsName2, ctl00$MainContent$ctl00

我正在使用 IE8。

于 2012-06-21T21:23:04.590 回答
0

查看生成的页面html。可能从服务器生成了不正确的 html 标记。即,一些 html 标记没有被关闭标记正确关闭。

于 2012-07-04T07:08:15.670 回答