我的问题是:有谁知道为什么隐藏的表单输入会在桌面浏览器上提交但在移动设备上却没有?在桌面上,我已经使用FireFox和Safari进行了测试。在移动设备上,我已经使用Safari进行了测试。
背景
我有一个autoForm,它使用自定义小部件来允许用户选择事件的日期和时间。
在此窗口小部件中,有三个输入字段:日期,时间和时区(如果事件位于不同的时区中)。
有两个隐藏的输入字段,一个用于日期时间对象,另一个用于用户选择的时区(单独存储,因此我知道如何在以后将其显示回来)。
当我在笔记本电脑上提交此表单时,一切都按预期工作。丢弃三个可见值,并将两个隐藏的输入写入数据库。
但是,在移动浏览器(iPhone 6 / Safari)上进行测试时,隐藏的输入显然没有被捕获,我无法提交表单,因为日期是必需的密钥。
不确定这是否会有所帮助,但是我的autoform看起来像这样:
{{#autoForm collection="Events" id="updateEndDate" type="update" doc=this resetOnSuccess="false"}}
<fieldset>
{{> afFieldInput name="endDate" type="dateAndTime" }}
</fieldset>
<button class="btn btn-primary" type="submit">
<i class="fa fa-floppy-o"></i>
</button>
<button class="btn btn-default" id="cancelForm" type="cancel">
<i class="fa fa-trash-o"></i>
</button>
{{/autoForm}}
我的自定义“dateAndTime”小部件如下所示:
<div class="form-group">
<input class="form-control hidden"
data-schema-key={{this.name}}
name={{this.name}}
type="datetime-local" value={{dateTime}}>
<div class="form-inline">
<div class="form-group">
<input autocomplete="off" class="form-control"
id="date" placeholder="Select a date"
type="text">
</div>
<div class="form-group">
<input autocomplete="off" class="form-control typeahead"
data-autoselect=true data-highlight="true"
data-selected="timeSelected"
data-source="times" id="time"
placeholder="Add a time?"
spellcheck="off" type="text">
</div>
<div class="form-group">
{{> timezonePicker class="form-control" selected=timezoneName }}
</div>
</div>
</div>
<div class="form-group">
<input class="form-control hidden" type="text"
name={{this.atts.tzName}} data-schema-key={{this.atts.tzName}} value= {{selectedTimezone}}>
<span class="help-block">{{afFieldMessage name=this.atts.tzName}}</span>
</div>
答案 0 :(得分:1)
根据this question,iOS Safari中不支持datetime
输入类型。我认为这就是您遇到此问题的原因,需要将datetime
字段分为两个单独的字段 - 一个用于date
,另一个用于time
}。
Here's a bit more info,您可以比较Chrome和iOS Safari here之类的所有差异。