Javascript 如何使用从各种复选框派生的字符串值填充textarea?

Javascript 如何使用从各种复选框派生的字符串值填充textarea?,javascript,forms,checkbox,Javascript,Forms,Checkbox,我是javascripting的新手,但通过阅读本论坛上的问答,我学到了很多东西。就像他们说的,学习编码的最好方法就是看看别人是如何编码的 我正在尝试使用基于javascript/html的表单来管理我的工作流。有一点背景,我是一名病理学家,为各种患者样本生成基于文本的报告。大部分输出非常适合使用预先编写的“固定评论”。我希望将这些注释链接到各种复选框值,这样我就可以简单地选中相应的复选框,并在文本区域中生成报告 例如,如果我有4个不同的组织部位: []站点1[]站点2[]站点3[]站点4 并且

我是javascripting的新手,但通过阅读本论坛上的问答,我学到了很多东西。就像他们说的,学习编码的最好方法就是看看别人是如何编码的

我正在尝试使用基于javascript/html的表单来管理我的工作流。有一点背景,我是一名病理学家,为各种患者样本生成基于文本的报告。大部分输出非常适合使用预先编写的“固定评论”。我希望将这些注释链接到各种复选框值,这样我就可以简单地选中相应的复选框,并在文本区域中生成报告

例如,如果我有4个不同的组织部位:

[]站点1[]站点2[]站点3[]站点4

并且可以为每个诊断从4种不同的诊断中选择一种

[]诊断1[]诊断2[]诊断3[]诊断4

我希望能够选择一个站点和一个诊断,并在文本区域中设置相关值,输出格式如下:

部位1,活检:
-诊断1

部位2,活检:
-诊断1

部位3,活检:
-诊断3

部位4,活检:
-诊断2

我这里有一些表单的开头:

<body>
Duodenum sites <br/>
<form name=duodenum>
<input type="checkbox" name="duoDx1" id="duoDx1" /> DUO, NSA <br />
<input type="checkbox" name="duoDx2" id="duoDx2" /> DUO, _ PART <br />
<input type="checkbox" name="duoDx3" id="duoDx3" /> DUO, BULB <br />
<input type="checkbox" name="duoDx4" id="duoDx4" /> DUO, ULCER <br />
</form>

<p>&nbsp;</p>
Duodenum diagnoses <br/>    
<form name=duodiags>
<input type="checkbox" name="duoDiag1" id="duoDiag1" /> NSA <br />
<input type="checkbox" name="duoDiag2" id="duoDiag2" /> FOCAL ACTIVE <br />
<input type="checkbox" name="duoDiag3" id="duoDiag3" /> C A  <br />
<input type="checkbox" name="duoDiag4" id="duoDiag4" /> CELIAC <br />
</form>

<p>&nbsp;</p>

<p>&nbsp;</p>

<textarea id="outPut" placeholder="Diagnoses" cols=80 rows=20></textarea>

</body>

十二指肠部位
两人,国家安全局
二人组,uu部分
双灯泡
多发性溃疡

十二指肠诊断
NSA
焦点活动
CA
乳糜泻

我的javascript:

var duoDxs = {
duoDx1: 'DUODENUM, BIOPSY: \n \n',
duoDx2: 'DUODENUM, ___ PART, BIOPSY: \n \n',
duoDx3: 'DUODENUM, BULB, BIOPSY: \n \n',
duoDx4: 'DUODENUM, "ULCER", BIOPSY: \n \n'
}

var duoDiags = {
duoDiag1: '     - NO SIGNIFICANT ABNORMALITIES \n',
duoDiag2: '     - FOCAL ACUTE INFLAMMATION\n',
duoDiag3: '     - CHRONIC AND ACTIVE DUODENITIS\n',
duoDiag4: '     - VILLOUS BLUNTING AND INCREASED INTRAEPITHELIAL LYMPHOCYTES (SEE 
COMMENT)\n'
}

var mytextbox = document.getElementById('outPut');


var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].type === "checkbox" && inputs[i].name.indexOf('duoDx') > -1) {
inputs[i].onchange = function() {
if (this.checked) {
mytextbox.value = mytextbox.value + duoDxs[this.name] + duoDiags[this.name];
} else {
mytextbox.value = mytextbox.value.replace(duoDxs[this.name], "");
            }
        }
    }
}
var duoDxs={
duoDx1:'十二指肠,活检:\n\n',
duoDx2:'十二指肠,部分,活检:\n\n',,
duoDx3:'十二指肠,球部,活检:\n\n',,
duoDx4:“十二指肠溃疡”,活检:\n\n'
}
var duoDiags={
duoDiag1:“-无明显异常\n”,
duoDiag2:“-局灶性急性炎症\n”,
duoDiag3:“-慢性和活动性十二指肠炎\n”,
duoDiag4:'-绒毛变钝和上皮内淋巴细胞增多(见
注释)\n'
}
var mytextbox=document.getElementById('outPut');
var inputs=document.getElementsByTagName(“输入”);
对于(变量i=0;i-1){
输入[i].onchange=function(){
如果(选中此项){
mytextbox.value=mytextbox.value+duoDxs[this.name]+duoDiags[this.name];
}否则{
mytextbox.value=mytextbox.value.replace(duoDxs[this.name],“”);
}
}
}
}

但是,我似乎无法使复选框值的两部分以正确的方式填充文本区域。我似乎不知道如何使用填充文本区域的功能来循环浏览站点和诊断?任何帮助/教育都将不胜感激

谢谢。
CK

根据您的问题,您希望将一个站点与一个诊断配对,并且该诊断可以多次使用:

SITE1, BIOPSY: - DIAGNOSIS 1 SITE2, BIOPSY: - DIAGNOSIS 1 << second usage of DIAGNOSIS 1 SITE3, BIOPSY: - DIAGNOSIS 3 SITE4, BIOPSY: - DIAGNOSIS 2 部位1,活检: -诊断1 部位2,活检: -诊断1只要更换这个

var duoDiags = {
             duoDiag1: '     - NO SIGNIFICANT ABNORMALITIES \n',
             duoDiag2: '     - FOCAL ACUTE INFLAMMATION\n',
             duoDiag3: '     - CHRONIC AND ACTIVE DUODENITIS\n',
             duoDiag4: '     - VILLOUS BLUNTING AND INCREASED 
                       INTRAEPITHELIAL LYMPHOCYTES  (SEE COMMENT)\n'
}


您考虑过使用jQuery吗?您好,我尝试过类似的方法,在代码中“借用”jQuery片段,但它们不起作用,而且我很难理解所做的工作,因为我还不太熟悉jQuery。您好,谢谢!这是一个不同的方法,我是如何考虑做这个项目,但我可以看到你的逻辑。我需要花时间与你的js一起帮助我了解正在做的事情,然后我可以尝试将其应用到我的模板的另一个草稿中。嗨,我想与你分享我制作的表单,并将你的脚本建议作为主干。
var duoDiags = {
             duoDiag1: '     - NO SIGNIFICANT ABNORMALITIES \n',
             duoDiag2: '     - FOCAL ACUTE INFLAMMATION\n',
             duoDiag3: '     - CHRONIC AND ACTIVE DUODENITIS\n',
             duoDiag4: '     - VILLOUS BLUNTING AND INCREASED 
                       INTRAEPITHELIAL LYMPHOCYTES  (SEE COMMENT)\n'
}
var duoDiags = {
    duoDx1: '     - NO SIGNIFICANT ABNORMALITIES \n \n',
    duoDx2: '     - FOCAL ACUTE INFLAMMATION\n\n',
    duoDx3: '     - CHRONIC AND ACTIVE DUODENITIS\n\n',
    duoDx4: '     - VILLOUS BLUNTING AND INCREASED INTRAEPITHELIAL LYMPHOCYTES
                     (SEE COMMENT)\n\n'
}