js怎么获取form表单中所有的input和select
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js怎么获取form表单中所有的input和select相关的知识,希望对你有一定的参考价值。
var FormStr = document.getElementById(form).getElementsByTagName("input")||document.getElementById(form).getElementsByTagName("select");
for(Y=0;Y<FormStr.length;Y++)
alert("表单")
这样写法不对啊
难道只能先遍历完input后再遍历select ??
有没有合在一起的方法?
目的是获取form表单中所有的input和select
<script type="text/javascript">
// 获取指定form中的所有的<input><select>对象
function getElements(formId)
var form = document.getElementById(formId);
if(form == null)
return false;
var elements = new Array();
var inputTagElements = form.getElementsByTagName('input');
for (var j = 0; j < inputTagElements.length; j++)
elements.push(inputTagElements[j]);
var selectTagElements = form.getElementsByTagName('select');
for (var j = 0; j < selectTagElements.length; j++)
elements.push(selectTagElements[j]);
return elements;
扩展资料:
form表单提交
在form标签中添加Action(提交的地址)和method(post),且有一个submit按钮。
(<input type='submit'>)就可以进行数据的提交,每一个input标签都需要有一个name属性,才能进行提交。
当点击登陆时,向数据库发生的数据是:username=username&password=password.
这种默认的提交方式,一般会进行页面的跳转(不成功时跳转到当前页面)。而有时候是对弹出框进行数据提交的,希望提交成功则关闭弹出框并刷选父页面,失败则提示失败原因,且弹出框不关闭。此时可以采用Ajax进行数据提交。
参考技术A可以获取form对象,然后获取它的所有子元素,并判断元素类型是不是input或select.
for (var i=0;i<ff.elements.length;i++)
var ee=ff.elements[i];
if("INPUT"==ee.tagName||"SELECT"==ee.tagName)
//处理代码
;
本回答被提问者和网友采纳
PHP怎么获取表单中的多条数据
<form action="__URL__/inster/" method="post">
<input style="width:90%; height:18px;" type="text" class="input-text" name="type" id="type" value=""/>
<input style="width:90%; height:18px;" type="text" class="input-text" name="money" id="money" value=""/>
<textarea style="width:90%; height:11px;"class="" name="bask" cols="32" id="bask" /></textarea>
</form>
中间的数据用JS增加了多条,在PHP中怎么写循环。我用的是TP框架
var cell = document.createElement("td");
//cell.appendChild(document.createTextNode(name));
var inputText = document.createElement("input");
inputText.setAttribute("type", "text");
inputText.setAttribute("name", "type");
inputText.style.border = "1px solid #A7A6AA";
inputText.style.width = "90%";
inputText.style.height = "18px";
//inputText.setAttribute("value", name);
cell.appendChild(inputText);
row.appendChild(cell);
inputText.setAttribute("name", "type"); type是表的字段,可能是这名字重复了
比如: name="contents" => name="contents[]",最后提交获取到的数据是一个数组形式的。
代码如下:
<form name="form1" method="post" action="index.php?action=ok">
1.<input type="text" name="contents[]" value="">
2.<input type="text" name="contents[]" value="">
3.<input type="text" name="contents[]" value="">
<input type="submit" value="提交">
</form>
<?php
if($_GET['action'] == 'ok')
$contents = $_POST['contents'];
print_r($contents);
?>
得到的数据是数组形式的,遍历即可。 参考技术A <input type=checkbox name=laiwen[] value=<?php echo $row[3];?> />
.......
PHP 接受表单:$count=count($_POST["laiwen"]);
for($i = 0; $i<count($_POST["laiwen"]); $i++)
echo $_POST["laiwen"][$i];
大概的意思就是这样 你可以试试看,要插入数据库那就直接在for循环中假如sql语句就可以了 参考技术B 别管用的是什么框架,表单始终都是post的表单,这是无论如何都改变不了的,你只需要用$_POST接收就行了,连循环都不用追问
不循环不行,只写入一条数据
追答不是你只写了一条数据,因为你用的是js增加了多条嘛,增的的东西,好歹也是DOM元素吧,既然是DOM元素,又是表单项,后台就没有收不到的道理,只是在原码中你看不到这些东西罢了,你可以先试试,看看结果如何
追问我试过了,比如写三条数据只能插入一条到数据库
追答你可以这样,
echo '' . htmlspecialchars(print_r($_POST, true)) . '';die;
看看你得到的数据是不是对的,如果这里是对的,那你只需要组织下你的插入语句罢了,仅此而己
嗯,这样也只显示最后的一条,郁闷
追答那说明不是后台的问题,而是前台js增加表单项的时候,加的名称是不是重复了,最好把名称改成数组形式的如这样形式的
追问Array
(
[type] => 1
[money] => 1
[bask] =>
[type0] => 2
[money0] => 2
[bask0] =>
[type1] => 3
[money1] => 3
[bask1] =>
[type2] => 4
[money2] => 4
[bask2] =>
[__hash__] => 6fad457aaad0c29a3447e758df8eeb8d
)
现在用echo '' . htmlspecialchars(print_r($_POST, true)) . '';die;可以全部看到了,但是插入还是不行呢
插入的话,不就是组织组织你的数据,弄成SQL语句就行了啊,除了第一组,其它的就是从0开始计数的嘛,一组数据,加个循环,组装个SQL语句,一次执行就完成了呀
参考技术C 对于这个问题,很简单,你是如何解决php接收 checkbox的值的呢?这个也同理。把表单的 name 属性设置为数组形式的,如 <input style="width:90%; height:18px;" type="text" class="input-text" name="type[]" id="type" value=""/>
<input style="width:90%; height:18px;" type="text" class="input-text" name="type[]" id="type" value=""/>
想几个都行。比如我写的有两个 name 是 type[] 的表单
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
</head>
<body>
<?php
if(isset($_POST['type']))
?>
<pre>
<?php
print_r($_POST);
else
?>
<form action="" method="post">
<input type="text" name="type[]" id="type" value="" />
<input type="text" name="money" id="money" value="" />
<textarea name="bask" cols="32" id="bask"></textarea>
<input type="text" name="type[]" />
<input type="submit" value="提交" />
</form>
<?php ?>
</body>
</html>
提交后结果如下,可以看到所有的值都获取了,其中$_POST['type']是个数组,通过 foreach或for来访问里面的值。 这个方法特别适合 PHP 接收 checkbox 的值。
Array
(
[type] => Array
(
[0] => text1
[1] => text2
)
[money] => 100
[bask] => textarea
)追问
foreach($_POST['dform'] as $key=>$value)
$bo=$_POST['type'][$key][$value];
$bo=$_POST['money'][$key][$value];
$bo=$_POST['bask'][$key][$value];
我这么写怎么取不到值呢 'dform' 是表面名称
下面是数组的结构,高手麻烦你再指点一下,好了我加点分,谢谢!
'dform'是表面名称,这句话我看不懂呀。
首先图中那个数组有三个元素,索引($key)分别是 type, money, bask, __hash__ ,值($value)分别是一个数组,一个数组,一个数组,一个字符串; 所以图中那个是个二维数组。
foreach($_POST['dform'] as $key=>$value)
//获取 "测试一"
$bo=$_POST['dform'][$key][0];
//或者直接 $bo = $value[0]; 因为 $_POST['dform'][$key] 和 $value 是一样的。
// 获取所有的 type
foreach ($value as $v)
echo $v; // 这里直接输出,你也可以作其它处理,比如把 $v 赋值给其它变量等。
dform是指这个表单名,
用$_POST['dform']取不到任何值,还有我这个是多条插入,不用输出的
foreach($_POST['dform'] as $key=>$value)
$bo=$_POST['type'][$key];
$bo=$_POST['money'][$key];
$bo=$_POST['bask'][$key];
这样写不行
我想把值全部给$bo最后一起插入 __hash__ 这个可以不管
form 标签的 name 属性是没用的,一般用在 javascript 操作当前页面的DOM用。对于 PHP 获取表单值用不上。还有你的那个foreach循环中, 三次给 $bo赋值,到最后$bo只能保存一个值,而不能全部保存。 PHP 通过提交表单只能获取 input 、textarea、select等的值。
就拿下面代码说吧
————————————————————————————
PHP 代码:
<?php
$count = count($_POST['type']);
//这里可以 print_r($_POST['type']); 或 print_r($_POST['money']);看一下,其实$_POST['type']和 $_POST['money']都是个一维数组,所以可以用下面的 for 循环来访问
if($count == count($_POST['money']))
$sql = array();
for($i=0; $i<$count; $i++)
$sql[] = "('$_POST['type'][$i]', '$_POST['money'][$i]') ";
$sqlstr = "insert into `table` (`type`, `money`) values ".implode(',', $sql);
echo $sqlstr;
//mysql_query($sqlstr); //假定前面已经打开到数据库的连接了,这里直接保存到数据库了。
以上是关于js怎么获取form表单中所有的input和select的主要内容,如果未能解决你的问题,请参考以下文章