简体   繁体   English

使用javascript启用输入字段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM