2016-08-14 18 views
0

でHTMLの入力配列の値を取得するにはどうしたら持って働き、このコード私は配列のように入力値をキャッチしようとしています!:HTML入力配列:JavaScriptの

<script> 
 
function get(userfirstname, userlastname){ 
 
\t alert(userfirstname); 
 

 
\t return false; 
 
} 
 
</script> 
 

 
<form action="" method="POST"> 
 
    <input type="text" name="userfirstname"> 
 
    <input type="text" name="userlastname"> 
 
    <input type="submit" onclick="return get(userfirstname.value, userlastname.value);"> 
 
</form>

罰金この:

<script> 
 
function get(user){ 
 
\t alert(user["firstname"].value); 
 

 
\t return false; 
 
} 
 
</script> 
 

 
<form action="" method="POST"> 
 
    <input type="text" name="user[firstname]"> 
 
    <input type="text" name="user[lastname]"> 
 
    <input type="submit" onclick="return get(user);"> 
 
</form>

私は非常に多くの異なるシナリオを試しましたが、ポイントはありません:(

いずれのヒントもあります。

+1

あなたが.. jsの中で、あなたがこの –

+0

ハローを行うためのオブジェクトでそれらを取得することはできません取得するjQueryのアプローチ!感謝あなたのコメントのために、どうすればそれらをオブジェクトに入れることができますか? –

答えて

1

onclickハンドラ内のform要素をターゲットにして、すべてのinput要素を繰り返しクエリして、探しているarrayを構築できます。

無効なonce要素とsubmit要素を除いて、各入力要素の名前と値を保持するオブジェクトの配列を作成するための方法の例を示します。

function get(evt){ 
 
    var fields = []; 
 
    event.target.parentElement 
 
    .querySelectorAll('input:not([disabled]):not([type="submit"])').forEach(function(e) { 
 
    fields.push({name: e.name, value: e.value}); 
 
    }) 
 
    console.log(fields); 
 
    return false; 
 
}
<form> 
 
    <input type="text" name="firstname" placeholder="Name"><br> 
 
    <input type="text" name="lastname" placeholder="Surename"><br> 
 
    <input type="text" name="foo" value="foo will be excluded" disabled><br> 
 
    <input type="submit" onclick="return get();"> 
 
</form>

+0

これはHTML配列入力として機能しますか?ユーザー[firstname]およびユーザー[lastname]のように?? –

+1

* HTML Array Input *のようなものがあるかどうかはわかりません。 PHPのように、これらのタイプの入力フィールド命名スタイルを扱う方法をサーバー側言語で行うことができます。しかし、なぜこれがあなたにとってとても重要なのか尋ねてもいいでしょうか?私が与えた例から、配列やオブジェクトを構築することができます。 name属性の中に配列の構文は必要ありません。 – DavidDomain

+0

あなたのコードを試しました!それは私のために働いた、ありがとう、私はHTML配列の入力を意味して、これは:

1

この

function get(){ 
    var fields = []; 
    var arr = $('form').not('input[type="submit"]').find('input[type="text"]') 
    $(arr).each(function(i,val){ 
     fields.push({name:$(val).attr('name'),value:$(val).val()}) 
    }) 
} 
+0

これはちょっと複雑すぎるようです。 jQueryを使用すると、[。serializeArray()](https://api.jquery.com/serializeArray/)を使うことができます。 ;) – DavidDomain

+0

コードが機能しました!ありがとうございました:)どのように、私はjavascriptコードを使用したいので、mr @DavidDomain、問題を修正しました:) –

関連する問題