您好我有一个HTML表单。
<form name="modeladd" ethod="post" class="form label-inline" enctype="multipart/form-data" onSubmit="return check('modeladd');">
<?php for($i=0;$i<$tot;$i++) { ?>
<div class="field">
<label for="connect_msg">Connect Message </label>
<textarea rows="4" cols="50" name="connect_msg[<?php echo getField($langs[$lan]);?>]" id="connect_msg[]"><?php echo getField($row[$lan]); ?></textarea>
</div>
<div class="field">
<label for="call_msg">Call Message :</label>
<textarea rows="4" cols="50" name="call_msg[<?php echo getField($langs[$lan]);?>]" id="call_msg"><?php echo getField($row[$lan]); ?></textarea>
</div>
<div class="field">
<label for="stripline_msg">Stripline Message :</label>
<textarea rows="4" cols="50" name="stripline_msg[<?php echo getField($langs[$lan]);?>]" id="stripline_msg"><?php echo getField($row[$lan]); ?></textarea>
</div>
<div class="field">
<label for="cost_msg">Cost Message :</label>
<textarea rows="4" cols="50" name="cost_msg[<?php echo getField($langs[$lan])?>]" id="cost_msg"><?php echo getField($row[$lan]); ?></textarea>
</div>
<?php } ?>
<input type="submit" class="btn btn-grey" value="submit">
</form>
这是用于验证的javascript
function check(form)
{
var name = new Array();
name =document.getElementById('connect_msg[]').value;
for(var i=0 ; i<=1; i++)
{
alert(name[i].value);
}
return true;
}
我没有获得connect_msg字段的值,这是一个数组。我想使用javascript验证字段值,所以请帮助我
答案 0 :(得分:2)
id
不能包含[]
个符号。请验证您的标记:http://validator.w3.org/ value
类型为string
,因此您无法获取数组。您可以做的是解析字符串以创建数组。EG。假设以下是输出的标记:
<textarea id="connect_msg">a,b,c,d,e,f,g</textarea>
您可以在JavaScript中执行此操作:
var getConnectMsg = document.getElementById('connect_msg').value;
var connectMsgArray = getConnectMsg.split(',');
connectMsgArray
将包含['a','b','c','d','e','f','g']
。
您可以在此处详细了解.split()
:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split
修改:由于您说textarea
处于循环中,因此使用class
名称属性检索元素并使用jQuery更加容易会帮助你。
所以HTML输出会是这样的:
<textarea class="connect_msg" id="connect_msg1">a,b,c,d,e,f,g</textarea>
<textarea class="connect_msg" id="connect_msg2">h,i,j,k,l,m,n</textarea>
<textarea class="connect_msg" id="connect_msg3">q,r,s,t,u,v</textarea>
var getConnectMsg = $('.connect_msg');
getConnectMsg.each(function(){
var getValue = $(this).val();
var connectMsgArray = getValue.split(',');
});
在.each()
的每次迭代中,getValue
的值为:
a,b,c,d,e,f,g
h,i,j,k,l,m,n
q,r,s,t,u,v
您可以在每次迭代期间对一组字段进行表单验证。
答案 1 :(得分:0)
名称不能是多维数组改变这个:
name="connect_msg[<?php echo getField($langs[$lan]);?>]"
对此:
name="connect_msg[]"
然后使用foreach循环在post脚本中解决它们 关于id使用这个而不是()我不知道你是否真的不能在id中使用[]但我知道这对我有用:
id="connect_msg_<?php echo getField($langs[$lan]);?>"
<强>更新强> 我认为你的权利,也许是使用一个类而不是id是可行的。
class="connect_msg"
然后在表格检查功能而不是:
var name = new Array();
name =document.getElementById('connect_msg[]').value;
这样做:
var connectMsg = document.getElementByClassName('connect_msg');
然后遍历connectMsg数组并获取/验证值 希望这有帮助。