2

我想使用 javascript 访问表单元素。表单是动态生成的,因此表单的名称、id 和元素都是可变的。我想textarea通过提供由不同脚本生成的表单名称来获取其中的 id 值。

例如:

<form method=post name=form33>
    <textarea id=466 cols=50 rows=5></textarea>
    <input name=submit33 onclick=postCmnt(33) value=Post type=button>
</form>

我有表单名称“form33”的名称,我需要它的textareaid 466 作为输出...

Javascript 生成表单:

function openComment(id, msgid, div) {
    var div = document.getElementById(div);
    div.innerHTML = "<form method=post name=form"+id+">
        <textarea id="+msgid+" cols=50 rows=5></textarea>
        <input name=submit"+id+" onclick=postCmnt("+id+") value=Post type=button>
        </form>"
}

需要访问表单的 Javascript

这是我尝试通过提供表单名称来访问名称idtextarea

function postCmnt(id){
    var msgid=document.forms["form"+id].elements[0].id.value;//the text area's id
    var msg=document.getElementById(msgid).value;//value of text area
    //rest scripts goes here        
} 

信息:

  1. 表单不是通过调用函数 openComment() 生成的静态
  2. 无法预测页面中的表单数量,因为它取决于用户输入。尽管 textarea 是表单的第一个元素。
4

3 回答 3

2

您可以添加一个包含 msgid 的隐藏字段:

Javascript 生成表单:

function openComment(id,msgid,div){
    var div = document.getElementById(div);
    div.innerHTML="<form method=post name=form"+id+">
        <input type='hidden' id='theid"+id+"' value='"+msgid+"'>
        <textarea id="+msgid+" cols=50 rows=5></textarea>
        <input name=submit"+id+" onclick=postCmnt("+id+") value=Post type=button>
        </form>"
}

然后直接获取值:

function postCmnt(id){
    var msgid=document.getElementById("theid"+id).value;//the text area's id
    var msg=document.getElementById(msgid).value;//value of text area
    //rest scripts goes here        
} 
于 2013-06-23T10:29:46.790 回答
1

如果文件中只有一个表格,您可以这样做

   document.forms[0]
于 2013-06-23T09:24:55.590 回答
0

As pointed out you can use

 document.getElementById("teller")[i]

to access the i-th field of the form with id "teller".

Demo

于 2013-06-23T09:32:17.903 回答