31

これが私のフォームの例です(必要な入力のみですが、他にもたくさんあります):

<form name="inputform" action="..." method="post">
    <input type="hidden" name="id_qtedje_77" id="id_qtedje_77" value="0">
    <input type="text" id="id_qte_77" name="prestation_detail_fields[77][qte_collecte]" value="0.00">
    <input type="text" id="id_rec_77" name="prestation_detail_fields[77][reliquat_conforme]" value="0.00">
    <input type="text" id="id_ren_77" name="prestation_detail_fields[77][reliquat_non_conforme]" value="0.00">
    <input type="checkbox" name="prestation_detail_fields[77][dechet_non_present]" value="1">
    
    <!-- another TR -->
    
    <input type="hidden" name="id_qtedje_108" id="id_qtedje_108" value="0">
    <input type="text" id="id_qte_108" name="prestation_detail_fields[108][qte_collecte]" value="0.00">
    <input type="text" id="id_rec_108" name="prestation_detail_fields[108][reliquat_conforme]" value="0.00">
    <input type="text" id="id_ren_108" name="prestation_detail_fields[108][reliquat_non_conforme]" value="0.00">
    <input type="checkbox" name="prestation_detail_fields[108][dechet_non_present]" value="1">
</form>

私が欲しいのは、入力の値を取得することですが、フォームがPHPで構築されているため、行識別子(77、108)がわかりません。

のようなことをする方法はありgetElementByName('id_qtedje_%')ますか?

注: 私はライブラリを使用しておらず、使用する予定もありません。

4

2 に答える 2

49

あなたの最善の策はおそらくです。これは、のような「属性が始まる」セレクターdocument.querySelectorAllを含む、任意の CSS セレクターを使用できます。最新のすべてのブラウザーと IE8 でサポートされていますinput[id^="id_qtedje_"]

var elements = document.querySelectorAll('input[id^="id_qtedje_"]');

(リストではなく) 最初の一致のみが必要な場合は、document.querySelector代わりに使用できます。ドキュメント順で最初に一致したものへの参照を返すかnull、何も一致しなかった場合は参照を返します。

または、要素にクラス名を付けてから を使用することもできますが、古いバージョンの Chrome と Firefox ではサポートされていましたが、IE8 にはサポートされていないため、最新の便利なバージョンほどサポートされていないことにdocument.getElementsByClassName注意してください。時代。getElementsByClassNamequerySelectorAll

var elements = document.getElementsByClassName("theClassName");

ライブラリ (jQuery、MooTools、Closure、Prototype など) を使用している場合、ほぼすべての CSS セレクターで要素を検索するために使用できる機能があり、独自のコードでブラウザー サポートのギャップを埋めます。 . たとえば、jQuery では$( jQuery) 関数です。MooTools と Prototype では、$$.

于 2013-04-08T08:42:35.070 に答える
8

jQueryでセレクターで始まるを使用できます

var listOfElements = $('[name^="id_qtedje_"]')

また、セレクターを含むおよび終了することに興味があるかもしれません


を使用するquerySelectorAllと、次のことができます

document.querySelectorAll('[name^="id_qtedje_"]')

または:

すべての要素がinputs であると仮定すると、次のように使用できます。

function getElementByNameStart(str) {
    var x=document.getElementsByTagName('input')
    for(var i=0;i<x.length;i++) {
        if(x[i].indexOf(str)==0) {
            return x[i];
        }
    }
}

getElementByNameStart("id_qtedje_") として呼び出すことができます

これは、この型の最初の要素のみを返すことに注意してください。すべてを返すには:

function getElementByNameStart(str) {
    var x=document.getElementsByTagName('input')
    var a=[];
    for(var i=0;i<x.length;i++) {
        if(x[i].indexOf(str)==0) {
            a.push(x[i])
        }
    }
    return a;
}

要素が任意のタイプの場合は、「入力」を「*」に置き換えます (これによりコードが遅くなる可能性があることに注意してください)

于 2013-04-08T08:39:00.627 に答える