1

フィールドセットに分割された HTML フォームを作成しています。関数内の特定のフィールドセットからフォーム フィールドを取得する必要があります。
現在、次のようになっています。

function conta(Fieldset){  
    var Inputs = Fieldset.getElementsByTagName("input");  
    var Selects = Fieldset.getElementsByTagName("select");  
    /* Doing the stuff I need to do in two iterations, one for each field type */  
}

しかし、将来がどうなるかは誰にもわかりません。また、フォームに新しいフィールド タイプ (ラジオ、チェックボックス) が追加された場合、これを維持するのは非常に困難になる可能性があります。要素に はすべてのフォーム フィールドを返す属性がある
ことを知っており、そのようなものを使用できることを望んでいました。 (イテレーション内の一連の条件でフィールド タイプを区別する必要があることはわかっていますが、それを維持する方が速くて簡単だと思います。そうでない場合や、そうすべきではない場合を除きます)formelements

4

6 に答える 6

1

jQuery がなくても問題ありません。

function condat(fieldset) {
    var tagNames = ['input', 'select', 'textarea'];  // Insert other tag names here
    var elements = [];

    for (var i in tagNames)
        elements.concat(fieldset.getElementsByTagName(tagNames[i]);

    for (var i in elements) {
        // Do what you want
    }
}
于 2009-08-25T09:29:41.220 に答える
1

jQueryを使用したい場合は@Ryanが正しい方向に進んでいますが(そして私はそうします)、次の行に沿って何かを提案します:

$('fieldset#fieldset1 > input[type=text]').each( function() {
      ... do something for text inputs }
 );

$('fieldset#fieldset1 > input[type=radio]').each( function() {
      ... do something for radios }
 );

$('fieldset#fieldset1 > select').each( function() {
      ... do something for selects }
 );

$('fieldset#fieldset1 > textarea').each( function() {
      ... do something for textareas }
 );

if-then-else コンストラクトの改善として。

于 2008-11-21T18:30:23.997 に答える
1

ラジオ ボタンとチェックボックスは引き続き入力タグであり、Inputs 変数に含まれます。問題は、チェックされた状態のハンドラーを追加して、どのラジオ ボタンとチェックボックスが選択されているかを確認する必要があることです。

さらに悪いことに、同じ名前のラジオボタンとチェックボックスを複数持つことができます...実際、ラジオボタンにはそうしなければなりません。

于 2008-11-21T18:30:49.750 に答える
0

これをテストしておらず、どのように機能するかわかりませんが、ここで JQuery を使用して、すべての要素を選択して JQuery オブジェクトにすることができます

//$("input select textarea").each(function() {
$(":input").each(function() { //even better
    // do stuff here
});

これにより、少なくともコードがクリーンアップされますが、前述のようにフィールド タイプに基づいて条件ステートメントを追加する必要があります。

于 2008-11-21T18:25:32.990 に答える