html5输入类型时间没有AM-PM和min-max

时间:2017-07-24 14:21:31

标签: jquery html html5

如何删除此输入的AM=PM部分

<input type='time' min='1:30' max='2:30'>

另外,正如您所看到的那样,我尝试添加minmax作为时间本身但不起作用,我如何才能使其正常工作?每次我尝试在没有"Enter a valid value"

的情况下提交时,它会一直告诉我AM-PM

5 个答案:

答案 0 :(得分:7)

&#13;
&#13;
.without_ampm::-webkit-datetime-edit-ampm-field {
   display: none;
 }
 input[type=time]::-webkit-clear-button {
   -webkit-appearance: none;
   -moz-appearance: none;
   -o-appearance: none;
   -ms-appearance:none;
   appearance: none;
   margin: -10px; 
 }
&#13;
<!--use step="1" to show seconds-->
   <input type="time" class="without_ampm"  />
&#13;
&#13;
&#13;

答案 1 :(得分:3)

由于我看到问题的某些方面没有得到解决,我正在添加以下答案。

为了让你的最小和最大值工作,你需要有2个数字的小时

<input id="time" type="time" min='01:00' max= '03:00'>

这将输出AM强制执行的时间,并且仅允许凌晨1点到凌晨3点之间的小时。

也是为了下午才做

<input id="time" type="time" min='13:00' max= '15:00'>

这将输出PM强制执行的时间,并且仅允许在下午1点到3点之间的小时。

答案 2 :(得分:0)

使用自定义输入时间,因为:

  • 某些浏览器无法处理输入类型的时间,在这种情况下,它会优雅地降级为输入类型的文本,但没有任何功能
  • 输入类型的时间在每个浏览器上看起来都不同
  • html5提供灵活的输入验证,它比输入类型时间更好地支持
  • 听起来您想要持续时间而不是时间。

以下是使用输入类型文本和输入验证的建议:

<input type="text" name="duration" id="durationForm" maxlength=8 pattern="^((\d+:)?\d+:)?\d*$"
    title="The amount of seconds, optionally preceded by 
           &quot;minutes:&quot; or by &quot;hours:minutes:&quot; 
           (empty or zero leads to an infinite duration)."
    placeholder="hh:mm:ss (empty for infinite duration)" size=30>

关于如何处理JavaScript输入的建议(请注意,durationFormValue 121,“ 2:01”和“ 1:61”都是有效的,并且产生相同的结果):

// two or more digits, to be more precise (might get relevant for durations >= 100h)
var twoDigits = function (oneTwoDigits) {
    if (oneTwoDigits < 10) {oneTwoDigits = "0" + oneTwoDigits}; 
    return oneTwoDigits;
}

var Time = function (durationFormValue) {
    var hmsString = String(durationFormValue);
    var hms = hmsString.match(/^(?:(?:(\d+)\:)?(\d+)\:)?(\d+)$/);
    if (hms === null) {
        throw new TypeError("Parameter " + hmsString + 
                            " must have the format ((int+:)?int+:)?int+");
    }
    var hoursNumber = +hms[1] || 0;
    var minutesNumber = +hms[2] || 0;
    var secondsNumber = +hms[3] || 0;
    this.seconds = twoDigits(secondsNumber % 60);
    minutesNumber += Math.floor(secondsNumber / 60);
    this.minutes = twoDigits(minutesNumber % 60);
    hoursNumber += Math.floor(minutesNumber / 60);
    this.hours = twoDigits(hoursNumber);
};

Time.prototype.equals = function (otherTime) {
    return (this.hours === otherTime.hours) &&    
       (this.minutes === otherTime.minutes) &&
           (this.seconds === otherTime.seconds);
};    

Time.prototype.toString = function () {
    return this.hours + ":" + this.minutes + ":" + this.seconds;
}
 

答案 3 :(得分:0)

没有AM-PM是不可能的。您应该使用自定义输入时间来完成这项工作。

使用BootStrap TimePicker控件执行this

答案 4 :(得分:0)

只需添加属性 value,默认时间包含秒或向 minmax 属性添加秒。

<input type='time' min='01:30:01' max='02:30:02' >