2

これが私のコードです:

<script type="text/javascript" xml:space="preserve">

function ATHD(f) {

var aa = "I would like help with the following topic(s): "
var bb = "Password Reset "
var cc = "Password Setup " 
var dd = "Firmware Upgrade (if applicable) "
var ee = "Local Access Setup "
var ff = "Remote Access Setup "
var gg = "Mobile Access Setup "
var hh = "Recording Schedule Setup "
var ii = "How to playback video "
var jj = "How to convert video "
var kk = "Email Notification Setup "
var ll = "PTZ Setup (if applicable) "

if( f.pr.checked == true) {
    f.sup.value = aa + bb;
}
if( f.ps.checked == true) {
    f.sup.value = aa + cc;
}


}

</script>
<form><input onclick="ATHD(this.form)" id="1" type="checkbox" name="pr" />&#160;Password Reset<br />
<input onclick="ATHD(this.form)" id="2" type="checkbox" name="ps" />&#160;Password Setup<br />
<input onclick="ATHD(this.form)" id="3" type="checkbox" name="fu" />&#160;Firmware Upgrade (if applicable)<br />
<input onclick="ATHD(this.form)" id="4" type="checkbox" name="la" />&#160;Local Access Setup<br />
<input onclick="ATHD(this.form)" id="5" type="checkbox" name="ra" />&#160;Remote Access Setup<br />
<input onclick="ATHD(this.form)" id="6" type="checkbox" name="ma" />&#160;Mobile Access Setup<br />
<input onclick="ATHD(this.form)" id="7" type="checkbox" name="rss" />&#160;Recording Schedule Setup<br />
<input onclick="ATHD(this.form)" id="8" type="checkbox" name="pb" />&#160;How to playback video<br />
<input onclick="ATHD(this.form)" id="9" type="checkbox" name="cv" />&#160;How to convert video<br />
<input onclick="ATHD(this.form)" id="10" type="checkbox" name="en" />&#160;Email Notification Setup<br />
<input onclick="ATHD(this.form)" id="11" type="checkbox" name="ptz" />&#160;PTZ Setup (if applicable)<br />
<br />
<span style="FONT-WEIGHT: bold">Question</span><span style="COLOR: #ff0000">*</span> (please be specific)<br />
<br />
<textarea style="HEIGHT: 164px; WIDTH: 577px" rows="10" cols="40">
</textarea></p>

<p><button>Continue...</button> 
<textarea style="HEIGHT: 164px; DISPLAY: hidden; WIDTH: 577px" rows="10" cols="40" name="sup">
</textarea>
 &#160;</p>
</form>

基本的に、私が探しているのは、ボックスがチェックされるたびに、チェックボックスの値を隠しフィールドに追加することです。HTML コードに「value=[チェックボックスの値]」を追加する必要があることは理解しています。私が許可したいのは、複数のアイテムがテキストボックスに追加されるように、複数のチェックボックスを選択することです。

これを行う 1 つの方法は、考えられるすべてのバリエーションに対して if-then ステートメントを作成することであることを理解しています。何千もの順列があるため、これはあまり時間効率が良くありません。

また、配列を使用してこれを簡素化できるかどうかも調べています。私はJavaScriptを3週間しかやっていないので、これを最も簡単な方法で概念化する方法がよくわかりません. 誰かがこれについてどのように考えるかを教えてくれれば、私はそれを大いに感謝します. コーディングのバックグラウンドがないため、これらのフォーラムに貢献し、スクリプト関数のプロセスを簡素化できるように、これを行う方法をさらに学びたいと考えています。

4

3 に答える 3

0

onclickイベントを削除するなど、DOMに小さな変更を加えました。問題が解決する場合があります

var arr = [];
remove_item = function(arr,value){
    for(b in arr ){
        if(arr[b] == value){
            arr.splice(b,1);
            break;
        }
    }
    return arr;
}
var inputs = document.getElementsByTagName("input");
for(var i=0;i<inputs.length;i++)
{
    if(inputs[i].getAttribute('type') == 'checkbox')
    {  inputs[i].addEventListener("change",function() {
        if(this.checked)
            arr.push(parseInt(this.id));
        else
        {
            remove_item(arr,parseInt(this.id));
        }
            console.log(arr);  document.getElementById("chcbx").value = arr.join(",");
        },false);
    }
}

jsFiddle remove_itemを見てください

于 2013-07-31T00:25:47.073 に答える
0

別の方法を次に示します。

// find number of checkboxes (you haven't specified if you 
// have a set number or not. If you have a set number, just 
// set checkboxCount to whatever number you have.
var checkboxCount = 0;
var inputTags = document.getElementsByTagName('input');
for (var i=0, length = inputTags.length; i<length; i++) {
     if (inputTags[i].type == 'checkbox') {
         checkboxCount++;
     }
}

function ATHD() {
    var totalValue = '';
    for (var i = 1; i < checkboxCount; i++) {
        if (document.getElementById(i).checked)
            totalValue += inputTags[i].getAttribute("name") + ';';
    }
    document.getElementById("hdnValues").value = totalValue;
    alert(totalValue);
}

これは基本的にすべてのチェックボックスをカウントし、すべてをループし、それらが であるかどうかをチェックしchecked、属性の値を取得し、nameそれを で区切られた文字列に追加します;

jsfiddle: http://jsfiddle.net/mcDvw/


または、必要なすべての値をチェックボックスの value 属性に設定し、JS 変数に値を入れる代わりにそれを読み取ることもできます。例えば

HTML:

<input onclick="ATHD()" id="1" type="checkbox" name="pr" value="Password Reset" />&#160;Password Reset<br />
<input onclick="ATHD()" id="2" type="checkbox" name="ps" value="Password Setup" />&#160;Password Setup<br />

JS:

function ATHD() {
    var totalValue = '';
    for (var i = 1; i < checkboxCount; i++) {
        if (document.getElementById(i).checked)
            totalValue += inputTags[i].value + ';';
    }
    document.getElementById("hdnValues").value = totalValue;
    document.getElementById("showValues").value = totalValue;
}

jsfiddle: http://jsfiddle.net/mcDvw/1/

于 2013-07-31T00:31:42.313 に答える