[英]enabling input fields with javascript
I have an HTML form which is like following: 我有一个HTML表单,如下所示:
<div class="input time"><label for="EventStartTimeHour">Start Time</label><select name="data[Event][start_time][hour]" class="autotime" id="EventStartTimeHour">
<option value=""></option>
<option value="00">0</option>
...
</select>:<select name="data[Event][start_time][min]" class="autotime" id="EventStartTimeMin">
<option value=""></option>
<option value="00">00</option>
...
</select></div><div class="input time"><label for="EventFinishTimeHour">Finish time</label><select name="data[Event][finish_time][hour]" class="autotime" id="EventFinishTimeHour">
<option value=""></option>
<option value="00">0</option>
...
</select>:<select name="data[Event][finish_time][min]" class="autotime" id="EventFinishTimeMin">
<option value=""></option>
<option value="00">00</option>
...
</select></div><div class="input time"><label for="EventPauseHour">Pause</label><select name="data[Event][pause][hour]" disabled="disabled" class="autotime" id="EventPauseHour">
<option value=""></option>
<option value="00">0</option>
...
</select>:<select name="data[Event][pause][min]" disabled="disabled" class="autotime" id="EventPauseMin">
<option value=""></option>
<option value="00">00</option>
...
</select></div>
What I want to do is to enable #EventPauseHour and #EventPauseMin, whenever #EventStartTimeHour, #EventStartTimeMin, #EventFinishTimeHour and #EventFinishTimeMin are valid numbers. 我想做的就是在#EventStartTimeHour,#EventStartTimeMin,#EventFinishTimeHour和#EventFinishTimeMin是有效数字时启用#EventPauseHour和#EventPauseMin。 This I want to achieve with the following code: 我想通过以下代码实现:
$('.autotime').on('change', function(){
var startHour = parseInt($("#EventStartTimeHour").val());
var startMin = parseInt($("#EventStartTimeMin").val());
var finishHour = parseInt($("#EventFinishTimeHour").val());
var finishMin = parseInt($("#EventFinishTimeMin").val());
if(!isNaN(startHour) && !isNaN(startMin) && !isNaN(finishHour) && !isNaN(finishMin)){
document.getElementById('EventPauseHour').disabled = true;
document.getElementById('EventPauseMin').disabled = true;
...
}
When I set all of the four dropdown values the other two fields are not enabled straight away. 当我设置所有四个下拉值时,其他两个字段不会立即启用。 But when I change the value of one of the four dropdowns once they are all valid numbers - the pause fields are enabled. 但是,当我更改了四个下拉列表之一的值时,如果它们都是有效数字,则将启用暂停字段。
Any help is much appreciated. 任何帮助深表感谢。
I would do something like this: ( Note! Not Fully Tested and may require slight modification ) 我会做这样的事情:( 注意!未经过全面测试,可能需要稍作修改 )
$(function() {
// rename me to something more meaningful.
var myEnableFunction = function(event) {
var startHour = parseInt($("#EventStartTimeHour").val());
var startMin = parseInt($("#EventStartTimeMin").val());
var finishHour = parseInt($("#EventFinishTimeHour").val());
var finishMin = parseInt($("#EventFinishTimeMin").val());
if(!isNaN(startHour) && !isNaN(startMin) && !isNaN(finishHour) && !isNaN(finishMin)){
// rather than having to specify each item, create a class (or any kind of attribute) that you can use.
$('.pauseEvents').attr('disabled', 'disabled');
} else {
// don't forget to remove the attribute so it can be used again.
$('.pauseEvents').removeAttr('disabled');
}
}
// setup the change event to call your "meaningful" function.
$('.autotime').on('change',myEnableFunction);
// call the "meaningful" funciton.
myEnableFunction();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.