javascript - 仅使用 Javascript,如何防止输出禁用的表单元素?

标签 javascript html

我正在尝试将我的表单输出到同一页面上的文本区域,并让它仅显示任何启用的字段。你可以在我的JSFiddle here看到它,现在,当您单击“组合”按钮时,它会输出所有 4 个类别,即使默认情况下禁用两个类别。

所以它会输出:

Optional Detail: 
Default Detail: 
Optional Selection: 
Default Selection: 

但如果未选中详细信息切换,我希望它看起来像这样:

Default Detail: 
Default Selection:

这是我的脚本:

function convertForm() {
var detailToggle = document.getElementById("detailToggle").value;
var basicDetail = document.getElementById("basicDetail").value;
var selectOne = document.getElementById("selectOne").value;
var selectTwo = document.getElementById("selectTwo").value;

var output = "";

output += "Optional Detail: " + detailToggle + "\n";
output += "Default Detail: " + basicDetail + "\n";
output += "Optional Selection: " + selectOne + "\n";
output += "Default Selection: " + selectTwo + "";
document.getElementById("output3").value = output;
}

function toggle(checkboxID, toggleID) {
var checkbox = document.getElementById(checkboxID);
var toggle = document.getElementById(toggleID);
updateToggle = checkbox.checked ? toggle.disabled=false : 
toggle.disabled=true;
}

function ResetForm() {
document.getElementById("detailToggle").disabled = true;
document.getElementById("selectOne").disabled = true;
}

和 HTML:

<table width="100%" height=" " border="0"><tr>
<td width=550 valign=top>

<form name="Form3" onsubmit="return false;" action="">
Toggle detail:
<input type="checkbox" id="ChecktoggleDetail" class="formArea" 
name="Toggledetail" onClick="toggle('ChecktoggleDetail', 'detailToggle')">
<input type="text" class="formArea" name="details"
id="detailToggle" placeholder="Toggle field" disabled required>
<br>
Detail:
<br>
<input type="text" class="formArea" name="Basicdetail" id="basicDetail"
placeholder="Some detail" maxlength="25" required>
<br>
Selection 1:
<input type="checkbox" id="CheckselectOne" class="formArea" 
name="detailsgiven"  onClick="toggle('CheckselectOne', 'selectOne')">
<br>
<select type="drop" class="formArea" name="Selectone" id="selectOne" 
disabled required>
<option value="" disabled selected>...</option>
<option value="Option One">Option 1</option>
<option value="Option Two">Option 2</option>
</select>
<br>
Selection 2:
<br>
<select type="drop" class="formArea" name="Selecttwo" id="selectTwo" 
required>
<option value="" disabled selected>...</option>
<option value="Option One">Option 1</option>
<option value="Option two">Option 2</option>
</select>
<br>

</td>
<td valign="top">
<table border="0" height="200" ><tr><td valign="top" height=200>

<textarea type="textarea" class="formArea" name="form3output" id="output3"
onclick="this.focus();this.select()" cols="70" rows="10" placeholder="" 
required></textarea><br>
</td></tr>

<tr><td valign=top>
<div class="btn-group">
<button value="Combine" onclick="convertForm()" 
id="combine3">Combine</button>
</div>
<br>

<div class="btn-group2">
<button type="reset" value="Reset form" onclick="ResetForm();">Reset 
form</button> <br> 
</div>
</form>

</td></tr></table>

我对 Javascript 还很陌生,我猜测需要插入一些变量,但不确定它是什么。如有任何帮助,我们将不胜感激。

最佳答案

你可以尝试这样做:

这里我只是检查元素的禁用属性,如果元素未禁用,那么我将文本添加到输出,

function convertForm() {
var detailToggle = document.getElementById("detailToggle").value;
var basicDetail = document.getElementById("basicDetail").value;
var selectOne = document.getElementById("selectOne").value;
var selectTwo = document.getElementById("selectTwo").value;
debugger;
var output = "";
if(!document.getElementById("detailToggle").disabled){
output += "Optional Detail: " + detailToggle + "\n";
}
if(!document.getElementById("basicDetail").disabled){
output += "Default Detail: " + basicDetail + "\n";
}
 if(!document.getElementById("selectOne").disabled){
    output += "Optional Selection: " + selectOne + "\n";
}
 if(!document.getElementById("selectTwo").disabled){
    output += "Default Selection: " + selectTwo + "";
}



document.getElementById("output3").value = output;
}

function toggle(checkboxID, toggleID) {
var checkbox = document.getElementById(checkboxID);
var toggle = document.getElementById(toggleID);
updateToggle = checkbox.checked ? toggle.disabled=false : toggle.disabled=true;
}

function ResetForm() {
document.getElementById("detailToggle").disabled = true;
document.getElementById("selectOne").disabled = true;
}

欲了解更多信息,请访问我的网站: https://jsfiddle.net/66qpfyhh/8/

关于javascript - 仅使用 Javascript,如何防止输出禁用的表单元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46108913/

相关文章:

php - 在 Javascript 中使用 PHP 变量和 JSON

javascript - 如何测试连接到 RabbitMQ 的 promise ?

javascript - JQuery 事件处理程序未触发

javascript - 无需提交即可获取文本字段值(html)

javascript - 当我在 iOS 网站上输入密码时如何隐藏最后一位数字

javascript - 页面未在 Node 中重定向

php - 寻找简单 HTML 游戏的设计/架构建议

javascript - 为什么我的函数返回未定义,尤其是 .split() 部分?

javascript - 当我使用 JQuery 单击链接时如何更改视频 src

php - 如何使用 mySQL 数据库将 HTML 放入 div