1

言語:Javascript

私はこのような一見単​​純な質問をするのは本当に嫌いですが、見た目は単純なので、これを機能させることはできません。

私はこれを完全に純粋なJavascriptだけで(ライブラリサポートなしで)行おうとしています。

チェックボックスのあるフォームがあります...結果を配列で使用するため、
すべてのチェックボックスに名前が付けられています。files[]

<input type='checkbox' name='files[]' id='1' value='1' /> file 1<br>
<input type='checkbox' name='files[]' id='2' value='2' /> file 2<br>
<input type='checkbox' name='files[]' id='3' value='3' /> file 3<br>

私がやろうとしているのは、ユーザーがフォームを送信したときです。

  • チェックボックスがチェックされていない場合>>アラートを返します!
  • ELSEはフォームを送信します

これが私のフォームです:

<form name="deleteFiles" action="" method="post" onsubmit="return confirm_update();">

    <input type='checkbox' name='files[]' id='1' value='1' /> file 1<br>
    <input type='checkbox' name='files[]' id='2' value='2' /> file 2<br>
    <input type='checkbox' name='files[]' id='3' value='3' /> file 3<br>
    <input type="submit" value="Submit" name="submit">

</form>​

そして、これが私のJavascriptコードです

function confirm_update() {
    var aCheckbox = document.deleteFiles.getElementsByTagName('input');

    if (aCheckbox.checked){
    return confirm("Are you sure you want to proceed deleting the selected files?");

    } else {
        alert("You do not have any selected files to delete.");
        return false;
    }
}​

動作中:http: //jsfiddle.net/DVqwB/3/

どうやら、動作していないので、使用する必要があることはわかっていますgetElementsByIdが、それぞれに一意のIDがあるため、使用できません。また、このサイトには多くのソリューションがあることも知っていますが、見てみると、実際にはjQueryを使用しています...

どんな助けとガイダンスも大歓迎です!どうもありがとう。

4

3 に答える 3

2

コレクションを反復処理する正しい方法は次のとおりです:(完全な例)

function confirm_update() {
    var arrCheckboxes = document.deleteFiles.elements["files[]"];
    var checkCount = 0;
    for (var i = 0; i < arrCheckboxes.length; i++) {
        checkCount += (arrCheckboxes[i].checked) ? 1 : 0;
    }

    if (checkCount > 0){
        return confirm("Are you sure you want to proceed deleting the selected   files?");
    } else {
        alert("You do not have any selected files to delete.");
        return false;
    }
}
body {
    margin: 30px;
}
<form name="deleteFiles" action="" method="post" onsubmit="return confirm_update();">
    
    <input type='checkbox' name='files[]' id='1' value='1' /> file 1<br />
    <input type='checkbox' name='files[]' id='2' value='2' /> file 2<br />
    <input type='checkbox' name='files[]' id='3' value='3' /> file 3<br />
    <input type="submit" value="Submit" name="submit" />
    
</form>

于 2012-11-14T09:57:44.550 に答える
1

このスクリプトを使用できます。フォームのアクションでファイル名を変更するだけです。

    <form id="deleteFiles" name="deleteFiles" action="yourFileName.html" method="post" onsubmit="return confirm_update();">

    <input type='checkbox' name='files[]' id='1' value='1' /> file 1<br>
    <input type='checkbox' name='files[]' id='2' value='2' /> file 2<br>
    <input type='checkbox' name='files[]' id='3' value='3' /> file 3<br>
    <input type="submit" value="Submit" name="submit">

</form>
    <script type="text/javascript">
    function confirm_update() {
        check=false;
        var aCheckbox = document.getElementById('deleteFiles').elements;
        for(i=0;i<aCheckbox.length;++i)
        {
            if(aCheckbox[i].type=='checkbox' && aCheckbox[i].checked)
           {
               check=true;
           }
         }
         if(check==true)
         {
             return confirm("Do u really want to delete?");
        }
        else
            {alert("you haven't selected any of the checkboxex");
            return false;
            }

    }
    </script>
于 2012-11-14T10:12:29.523 に答える
1

getElementsByTagName単一の要素ではなく、NodeList(配列のようなもの)を返します。

それをループして各要素を順番にテストする必要があり、条件に一致するものが見つからずにループの最後に到達した場合にのみ「else」シナリオを処理します。

于 2012-11-14T09:58:01.360 に答える