javascript功能并非在所有浏览器上都适用

时间:2018-11-19 12:57:37

标签: javascript javascript-events keyboard-events

我创建了一个fnNumericDecimalOnly函数javascript。 代码:

并在我的jsp页面中使用它,该页面仅允许数字和十进制,而不像下面的代码所示:

function fnNumericDecimalOnly(event) {    	
    if (event.keyCode < 45 || event.keyCode > 58) {
        event.returnValue = false;
    }
}
<div class="col-sm-4 col-lg-4">
    <div class="form-group has-feedback required-field-block">
        <label for="inTimeTxt" class="col-md-4 control-label">In Time</label>
        <div class="col-md-7">

            <input id="inTimeTxt" name="inTimeTxt" class="form-control" maxlength="5"
                   type="text" placeholder="00:00" value="" title="In Time" 
                   onkeypress="javascript:return fnNumericDecimalOnly(event)" 
                   data-tooltip="tooltip" data-placement="top" />(In hh:mm format)

            <span class="glyphicon form-control-feedback" id="inTimeTxtMessage"></span>
        </div>
        <div class="col-md-1"></div>
    </div>
</div>

它仅在Chrome中有效,而在Firefox中不起作用。 所以任何人都可以帮我做什么,以便它适用于所有浏览器。

1 个答案:

答案 0 :(得分:2)

https://www.w3schools.com/jsref/event_key_keycode.asp

注意:在Firefox中,keyCode属性在onkeypress事件上不起作用(只会返回0)。对于跨浏览器的解决方案,请结合使用which属性和keyCode,例如:

var x = event.which || event.keyCode;  // Use either which or keyCode, depending on browser support

这是5s的Google搜索内容...

function fnNumericDecimalOnly(event) { 
    let key = event.which || event.keyCode;     
    if (key < 45 || key > 58) {
        event.returnValue = false;
    }
}