0

嗨,我有一个 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验证两个字段值所以请帮助我

4

2 回答 2

2
  1. id不能有[]符号。请验证您的标记:http: //validator.w3.org/
  2. value从元素返回的是 type ,string所以你不能得到一个数组。您可以做的是解析字符串以创建您的数组。

例如。假设以下是输出的标记:

<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

编辑:既然你说是在一个循环中,那么使用name 属性textarea检索元素会更容易,并且使用jQuery将极大地帮助你。class

所以 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

您可以在每次迭代期间对一组字段进行表单验证。

于 2013-03-13T07:50:25.373 回答
0

名称不能是多维数组更改此:

name="connect_msg[<?php echo getField($langs[$lan]);?>]"

对此:

name="connect_msg[]"

然后使用 foreach 循环在 post 脚本中解决它们。
关于 id 使用 this instead() 我不知道你不能在 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 数组并获取/验证值。
希望这有帮助。

于 2013-03-13T07:54:10.790 回答