-1

PHPで次のようにチェックボックスを作成しました

echo "<Input type = 'Checkbox' class='cl2'  Name =".$i."/>".$f1.

チェックボックスがチェックされていない場合、送信時にポップアップボックスが作成されるので、検証したいと思います。

次のjsで試してみました

function Validate() {
    alert (document.getElementsByClassName('cl2')[0].checked);
    for(i=0;i<=5;i++) {
        if(document.getElementsByClassName('cl2')[i].checked == false) {
            alert("approve atleast one request");
        } else {
            return true;
        } 
    }
}

何も返されません。forループの条件はどうあるべきですか?

4

3 に答える 3

2

検証が無効な場合は false を返す必要があります。以下を参照してください。getElementsByClassName を使用する場合は注意してください。これは最新のブラウザーでのみサポートされています。古いブラウザーのフォールバックを設定するか、jQuery を使用する必要があります。

function Validate() {
    for (i = 0; i <= 5; i++) {
        if (document.getElementsByClassName('cl2')[i].checked == false) {
            alert("approve atleast one request");
            return false;
        } else {
            return true;
        }
    }
}
于 2012-04-05T07:19:43.803 に答える
0

まず、名前属性を次のようにラップする必要があります。

name='" . $i . "'

そうしないと、phpと連結している$ iは、文字列がエコーされたときにHTMLマークアップで引用符で囲まれず、HTMLマークアップが誤って表示されます。

次に、JavaScriptを次のようにフォーマットします(何をしようとしているのか正確にはわかりません)。

function Validate() {
    var isChecked = false;
    for(i=0; i <= 5; i++) {
        if(document.getElementsByClassName('cl2')[i].checked == true) {
          isChecked = true;
        }
    }
    return isChecked;
}

if(Validate()) {
    // do something 
} else {
    alert("approve atleast one request");   
}

ループ内でreturnステートメントを生成するのは悪いスタイルなので、それは避けてください。また、コンテンツが読み込まれた後にスクリプトが確実に実行されるように、エコーされたphpののスクリプトタグにJavaScriptを挿入してみます。それ以外の場合は、タグにonload="Validate()"属性を挿入し、ページのセクションにJavaScriptを配置できます。<body><head>

お役に立てれば。乾杯!

于 2012-04-05T07:36:31.697 に答える
0

for ループの長さを取得するには、次のようにしてみてください。

var elem = this.getElementsByTagName('cl2');
for (var i = 0; i < elem.length; i++)
于 2012-04-05T07:23:54.350 に答える