HTML select 选项在单击按钮时未 disabled/enabled,因为它们应该 Javascript
HTML select options are not disabled/enabled on button click as they should Javascript
我正在尝试使用 javascript DOM.
在我的 HTML 页面中禁用我的 select 元素上的选项
单击按钮时,一个函数应禁用 select 中的每个选项,而另一个按钮应再次启用它们。
问题是第一个选项永远不会被禁用,而且在单击按钮时也不会触发事件。即使我尝试了几个小时,我也无法弄清楚问题是什么。
这是我的 select 和按钮:
<select name="tempoTest"
id="tempoTest1"
class="input-dimension select2 tempoTest"
required="true"
style="padding:0.8%;">
<option value="days">Giorni</option>
<option value="hours">Ore</option>
<option value="minutes">Minuti</option>
</select>
<button type="button" class="btn-default btn-edit" name="edit1" id="edit1" onclick="editInput()">Edit </button>
<button type="button" class="btn-default btn-edit" name="annulla1" id="annulla1" onclick="annullaEdit()" style="margin-left:6%">Annulla </button>
这是加载页面时应该发生的情况(默认):
var time = "minutes";
var $j = jQuery.noConflict(); //per evitare conflitti con altre librerie
$j("#tempoTest1").val(time).trigger('change');
document.getElementById("tempoTest1").options[0].disabled = true;
document.getElementById("tempoTest1").options[1].disabled = true;
document.getElementById("tempoTest1").options[2].disabled = true;
document.getElementById("tempoTest1").disabled = true;
这些是禁用和启用的功能("editInput()" 应该启用每个选项,"annullaEdit" 应该禁用它们)
function editInput(){
var tempo = "hours" //value from DB
$j("#tempoTest1").val(tempo).trigger('change');
document.getElementById("tempoTest1").disabled = false;
document.getElementById("tempoTest1").options[0].disabled = false;
document.getElementById("tempoTest1").options[1].disabled = false;
document.getElementById("tempoTest1").options[2].disabled = false;
}
function annullaEdit(){
var tempo = <?php echo json_encode($time)?>;
$j("#tempoTest1").val(tempo).trigger('change');
document.getElementById("tempoTest1").disabled = true;
document.getElementById("tempoTest1").options[0].disabled = true;
document.getElementById("tempoTest1").options[1].disabled = true;
document.getElementById("tempoTest1").options[2].disabled = true;
}
是否存在功能无法正常工作且第一个选项从未被禁用的原因?
提前致谢。
适合我:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
function editInput() {
//var tempo = "hours" //value from DB
//$j("#tempoTest1").val(tempo).trigger('change');
document.getElementById("tempoTest1").disabled = false;
document.getElementById("tempoTest1").options[0].disabled = false;
document.getElementById("tempoTest1").options[1].disabled = false;
document.getElementById("tempoTest1").options[2].disabled = false;
}
function annullaEdit() {
//var tempo = <?php echo json_encode($time)?>;
//$j("#tempoTest1").val(tempo).trigger('change');
document.getElementById("tempoTest1").disabled = true;
document.getElementById("tempoTest1").options[0].disabled = true;
document.getElementById("tempoTest1").options[1].disabled = true;
document.getElementById("tempoTest1").options[2].disabled = true;
}
</script>
</head>
<body>
<select name="tempoTest"
id="tempoTest1"
class="input-dimension select2 tempoTest"
required="true"
style="padding:0.8%;">
<option value="days">Giorni</option>
<option value="hours">Ore</option>
<option value="minutes">Minuti</option>
</select>
<button type="button" class="btn-default btn-edit" name="edit1" id="edit1" onclick="editInput()">Edit </button>
<button type="button" class="btn-default btn-edit" name="annulla1" id="annulla1" onclick="annullaEdit()" style="margin-left:6%">Annulla </button>
</body>
</html>
这是我认为有效的片段:
// This is what should happen when the page is loaded (default):
var time = "minutes";
var $j = jQuery.noConflict(); //per evitare conflitti con altre librerie
$j("#tempoTest1").val(time).trigger('change');
/*document.getElementById("tempoTest1").options[0].disabled = true;
document.getElementById("tempoTest1").options[1].disabled = true;
document.getElementById("tempoTest1").options[2].disabled = true;*/
document.getElementById("tempoTest1").disabled = true;
// These are the functions to disable and enable ("editInput()" should enable every option and "annullaEdit" should disable them)
function editInput() {
var tempo = "hours" //value from DB
$j("#tempoTest1").val(tempo).trigger('change');
document.getElementById("tempoTest1").disabled = false;
/*document.getElementById("tempoTest1").options[0].disabled = false;
document.getElementById("tempoTest1").options[1].disabled = false;
document.getElementById("tempoTest1").options[2].disabled = false;*/
}
function annullaEdit() {
var tempo = "hours";
$j("#tempoTest1").val(tempo).trigger('change');
document.getElementById("tempoTest1").disabled = true;
/*document.getElementById("tempoTest1").options[0].disabled = true;
document.getElementById("tempoTest1").options[1].disabled = true;
document.getElementById("tempoTest1").options[2].disabled = true;*/
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="tempoTest" id="tempoTest1" class="input-dimension select2 tempoTest" required="true" style="padding:0.8%;">
<option value="days">Giorni</option>
<option value="hours">Ore</option>
<option value="minutes">Minuti</option>
</select>
<button type="button" class="btn-default btn-edit" name="edit1" id="edit1" onclick="editInput()">Edit </button>
<button type="button" class="btn-default btn-edit" name="annulla1" id="annulla1" onclick="annullaEdit()" style="margin-left:6%">Annulla </button>
因为它不会改变用户体验,所以我更改了注释选项的启用和禁用。
如有必要,请发表评论以解释什么不起作用或您想修改什么。
我正在尝试使用 javascript DOM.
在我的 HTML 页面中禁用我的 select 元素上的选项单击按钮时,一个函数应禁用 select 中的每个选项,而另一个按钮应再次启用它们。
问题是第一个选项永远不会被禁用,而且在单击按钮时也不会触发事件。即使我尝试了几个小时,我也无法弄清楚问题是什么。
这是我的 select 和按钮:
<select name="tempoTest"
id="tempoTest1"
class="input-dimension select2 tempoTest"
required="true"
style="padding:0.8%;">
<option value="days">Giorni</option>
<option value="hours">Ore</option>
<option value="minutes">Minuti</option>
</select>
<button type="button" class="btn-default btn-edit" name="edit1" id="edit1" onclick="editInput()">Edit </button>
<button type="button" class="btn-default btn-edit" name="annulla1" id="annulla1" onclick="annullaEdit()" style="margin-left:6%">Annulla </button>
这是加载页面时应该发生的情况(默认):
var time = "minutes";
var $j = jQuery.noConflict(); //per evitare conflitti con altre librerie
$j("#tempoTest1").val(time).trigger('change');
document.getElementById("tempoTest1").options[0].disabled = true;
document.getElementById("tempoTest1").options[1].disabled = true;
document.getElementById("tempoTest1").options[2].disabled = true;
document.getElementById("tempoTest1").disabled = true;
这些是禁用和启用的功能("editInput()" 应该启用每个选项,"annullaEdit" 应该禁用它们)
function editInput(){
var tempo = "hours" //value from DB
$j("#tempoTest1").val(tempo).trigger('change');
document.getElementById("tempoTest1").disabled = false;
document.getElementById("tempoTest1").options[0].disabled = false;
document.getElementById("tempoTest1").options[1].disabled = false;
document.getElementById("tempoTest1").options[2].disabled = false;
}
function annullaEdit(){
var tempo = <?php echo json_encode($time)?>;
$j("#tempoTest1").val(tempo).trigger('change');
document.getElementById("tempoTest1").disabled = true;
document.getElementById("tempoTest1").options[0].disabled = true;
document.getElementById("tempoTest1").options[1].disabled = true;
document.getElementById("tempoTest1").options[2].disabled = true;
}
是否存在功能无法正常工作且第一个选项从未被禁用的原因?
提前致谢。
适合我:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script>
function editInput() {
//var tempo = "hours" //value from DB
//$j("#tempoTest1").val(tempo).trigger('change');
document.getElementById("tempoTest1").disabled = false;
document.getElementById("tempoTest1").options[0].disabled = false;
document.getElementById("tempoTest1").options[1].disabled = false;
document.getElementById("tempoTest1").options[2].disabled = false;
}
function annullaEdit() {
//var tempo = <?php echo json_encode($time)?>;
//$j("#tempoTest1").val(tempo).trigger('change');
document.getElementById("tempoTest1").disabled = true;
document.getElementById("tempoTest1").options[0].disabled = true;
document.getElementById("tempoTest1").options[1].disabled = true;
document.getElementById("tempoTest1").options[2].disabled = true;
}
</script>
</head>
<body>
<select name="tempoTest"
id="tempoTest1"
class="input-dimension select2 tempoTest"
required="true"
style="padding:0.8%;">
<option value="days">Giorni</option>
<option value="hours">Ore</option>
<option value="minutes">Minuti</option>
</select>
<button type="button" class="btn-default btn-edit" name="edit1" id="edit1" onclick="editInput()">Edit </button>
<button type="button" class="btn-default btn-edit" name="annulla1" id="annulla1" onclick="annullaEdit()" style="margin-left:6%">Annulla </button>
</body>
</html>
这是我认为有效的片段:
// This is what should happen when the page is loaded (default):
var time = "minutes";
var $j = jQuery.noConflict(); //per evitare conflitti con altre librerie
$j("#tempoTest1").val(time).trigger('change');
/*document.getElementById("tempoTest1").options[0].disabled = true;
document.getElementById("tempoTest1").options[1].disabled = true;
document.getElementById("tempoTest1").options[2].disabled = true;*/
document.getElementById("tempoTest1").disabled = true;
// These are the functions to disable and enable ("editInput()" should enable every option and "annullaEdit" should disable them)
function editInput() {
var tempo = "hours" //value from DB
$j("#tempoTest1").val(tempo).trigger('change');
document.getElementById("tempoTest1").disabled = false;
/*document.getElementById("tempoTest1").options[0].disabled = false;
document.getElementById("tempoTest1").options[1].disabled = false;
document.getElementById("tempoTest1").options[2].disabled = false;*/
}
function annullaEdit() {
var tempo = "hours";
$j("#tempoTest1").val(tempo).trigger('change');
document.getElementById("tempoTest1").disabled = true;
/*document.getElementById("tempoTest1").options[0].disabled = true;
document.getElementById("tempoTest1").options[1].disabled = true;
document.getElementById("tempoTest1").options[2].disabled = true;*/
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="tempoTest" id="tempoTest1" class="input-dimension select2 tempoTest" required="true" style="padding:0.8%;">
<option value="days">Giorni</option>
<option value="hours">Ore</option>
<option value="minutes">Minuti</option>
</select>
<button type="button" class="btn-default btn-edit" name="edit1" id="edit1" onclick="editInput()">Edit </button>
<button type="button" class="btn-default btn-edit" name="annulla1" id="annulla1" onclick="annullaEdit()" style="margin-left:6%">Annulla </button>
因为它不会改变用户体验,所以我更改了注释选项的启用和禁用。
如有必要,请发表评论以解释什么不起作用或您想修改什么。