0

こんにちは、HTML フォームが 1 つあります。

<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はタイプ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']

詳細については、 https.split(): //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 ループを使用してポスト スクリプトでそれらに対処します。
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 配列をループして、値を取得/検証します。
この助けを願っています。

于 2013-03-13T07:54:10.790 に答える