Javascript 可以 disable/enable 按钮但不能禁用单选按钮或文本区域
Javascript can disable/enable buttons but can't disable radio buttons or text areas
我正在制作一个 phonegap 应用程序,我有一个页面需要一些用户输入。如果选中了一个复选框(已报告),那么我想禁用除下一个选中按钮之外的所有用户输入。
<div data-role="main" class="ui-content" id="MainBody">
<ul id="topBtns">
<li id="reportedLabel">
<label id="reportedLabel">
<input type="checkbox" id="reported" class="hidden" onchange="document.getElementById('1a').disabled = this.checked;document.getElementById('1b').disabled = this.checked;document.getElementById('comment1').disabled = this.checked;document.getElementById('photo1').disabled = this.checked;">
Already reported
</label>
</li>
<li id="back">
<button id="back" data-icon="arrow-l">
Check 0
</button>
</li>
</ul>
<br>
<h2 class="checkNum">Check #1</h2>
<p class="check">Some Text</p>
<label><input type="radio" id="1a" name="1">Answer1</label>
<label><input type="radio" id="1b" name="1">Answer2</label>
<br>
<textarea rows="4" placeholder="Type your comments here" id="comment1"></textarea>
<br>
<button id="photo1" onclick="insert_photo()">
Insert Photo
</button>
<button id="btnCont1" onClick="location.href='index.html#Q2'">Continue</button>
</div> <!-- Main -->
当我 运行 这个问题中的代码片段时,它起作用了,但是当我 运行 它通过 phonegap 应用程序甚至只是 运行 HTML 文件时只有插入照片按钮被禁用,但其他 3 个元素被忽略。这让我觉得它与 Jquery 移动设备有关,但我不确定是否完全诚实。
非常感谢任何帮助
虽然我无法在您的环境中进行测试,但这可能与您的使用方式有关this
。为了更好地检查您的问题,我将 onchange 事件的代码转移到了一个函数中。我遇到的第一个问题是 this
没有被传递给函数。然后我最初调用函数 disableControls(this.checked)
,并使用参数来获取值。它有效,但让我觉得这可能是你的问题。最好的方法是您也尝试使用 document.getElementById 获取选中的值。
查看我的示例并在您的环境中重现以查看它是否有效。
如果没有,您可以使用 console.log 元素来调试错误。
function disableControls() {
var checked = document.getElementById('reported').checked;
document.getElementById('1a').disabled = checked;
document.getElementById('1b').disabled = checked;
document.getElementById('comment1').disabled = checked;
document.getElementById('photo1').disabled = checked;
}
<html >
<meta charset="utf-8">
<body>
<div data-role="main" class="ui-content" id="MainBody">
<ul id="topBtns">
<li id="reportedLabel">
<label id="reportedLabel">
<input type="checkbox" id="reported" class="hidden" onchange="disableControls();">
Already reported
</label>
</li>
<li id="back"><button id="back" data-icon="arrow-l">Check 0</button></li>
</ul>
<br>
<h2 class="checkNum">Check #1</h2>
<p class="check">Some Text</p>
<label><input type="radio" id="1a" name="1">Answer1</label>
<label><input type="radio" id="1b" name="1">Answer2</label>
<br>
<textarea rows="4" placeholder="Type your comments here" id="comment1"></textarea>
<br>
<button id="photo1" onclick="insert_photo()">Insert Photo</button>
<button id="btnCont1" onClick="location.href='index.html#Q2'">Continue</button>
</div> <!-- Main -->
</body>
</html>
我正在制作一个 phonegap 应用程序,我有一个页面需要一些用户输入。如果选中了一个复选框(已报告),那么我想禁用除下一个选中按钮之外的所有用户输入。
<div data-role="main" class="ui-content" id="MainBody">
<ul id="topBtns">
<li id="reportedLabel">
<label id="reportedLabel">
<input type="checkbox" id="reported" class="hidden" onchange="document.getElementById('1a').disabled = this.checked;document.getElementById('1b').disabled = this.checked;document.getElementById('comment1').disabled = this.checked;document.getElementById('photo1').disabled = this.checked;">
Already reported
</label>
</li>
<li id="back">
<button id="back" data-icon="arrow-l">
Check 0
</button>
</li>
</ul>
<br>
<h2 class="checkNum">Check #1</h2>
<p class="check">Some Text</p>
<label><input type="radio" id="1a" name="1">Answer1</label>
<label><input type="radio" id="1b" name="1">Answer2</label>
<br>
<textarea rows="4" placeholder="Type your comments here" id="comment1"></textarea>
<br>
<button id="photo1" onclick="insert_photo()">
Insert Photo
</button>
<button id="btnCont1" onClick="location.href='index.html#Q2'">Continue</button>
</div> <!-- Main -->
当我 运行 这个问题中的代码片段时,它起作用了,但是当我 运行 它通过 phonegap 应用程序甚至只是 运行 HTML 文件时只有插入照片按钮被禁用,但其他 3 个元素被忽略。这让我觉得它与 Jquery 移动设备有关,但我不确定是否完全诚实。
非常感谢任何帮助
虽然我无法在您的环境中进行测试,但这可能与您的使用方式有关this
。为了更好地检查您的问题,我将 onchange 事件的代码转移到了一个函数中。我遇到的第一个问题是 this
没有被传递给函数。然后我最初调用函数 disableControls(this.checked)
,并使用参数来获取值。它有效,但让我觉得这可能是你的问题。最好的方法是您也尝试使用 document.getElementById 获取选中的值。
查看我的示例并在您的环境中重现以查看它是否有效。
如果没有,您可以使用 console.log 元素来调试错误。
function disableControls() {
var checked = document.getElementById('reported').checked;
document.getElementById('1a').disabled = checked;
document.getElementById('1b').disabled = checked;
document.getElementById('comment1').disabled = checked;
document.getElementById('photo1').disabled = checked;
}
<html >
<meta charset="utf-8">
<body>
<div data-role="main" class="ui-content" id="MainBody">
<ul id="topBtns">
<li id="reportedLabel">
<label id="reportedLabel">
<input type="checkbox" id="reported" class="hidden" onchange="disableControls();">
Already reported
</label>
</li>
<li id="back"><button id="back" data-icon="arrow-l">Check 0</button></li>
</ul>
<br>
<h2 class="checkNum">Check #1</h2>
<p class="check">Some Text</p>
<label><input type="radio" id="1a" name="1">Answer1</label>
<label><input type="radio" id="1b" name="1">Answer2</label>
<br>
<textarea rows="4" placeholder="Type your comments here" id="comment1"></textarea>
<br>
<button id="photo1" onclick="insert_photo()">Insert Photo</button>
<button id="btnCont1" onClick="location.href='index.html#Q2'">Continue</button>
</div> <!-- Main -->
</body>
</html>