Javascript 为什么在js取消设置只读标签后,iOS不显示键盘输入?

Javascript 为什么在js取消设置只读标签后,iOS不显示键盘输入?,javascript,html,ios,Javascript,Html,Ios,我将HTML表单中的UITextField设置为只读。输入时,javascript应测试字段当前是否由其他人编辑,如果不是,readonly将设置为false,并且允许编辑该字段。为此,我使用了onFocus()事件 这在Chrome和Firefox中运行良好,但在iOS设备上,屏幕键盘不会显示出来。我怀疑iOS上的Safari浏览器仍然可以看到readonly处于活动状态,即使脚本将其设置为false 以后必须能够使字段再次成为只读字段,因此从HTML中删除它不是一个选项 有没有办法告诉iOS

我将
HTML
表单中的
UITextField
设置为只读。输入时,javascript应测试字段当前是否由其他人编辑,如果不是,readonly将设置为false,并且允许编辑该字段。为此,我使用了onFocus()事件

这在Chrome和Firefox中运行良好,但在iOS设备上,屏幕键盘不会显示出来。我怀疑iOS上的Safari浏览器仍然可以看到readonly处于活动状态,即使脚本将其设置为false

以后必须能够使字段再次成为只读字段,因此从HTML中删除它不是一个选项

有没有办法告诉iOS即使设置了readonly也要始终显示键盘,或者这是错误的方法?也许通过onFocus()触发它通常是错误的

javascript部分

function preCheckField(field,form){
    if(field.readOnly){
    // ses = "<?php echo $session['ukey']; ?>";
    // res = getAccessRequest(field.id, form.id, ses);
    // server side check before entry is skipped for this test
    // assuming entry was allowed the readonly must be unset
        field.readOnly = false;
        dev_div = document.getElementById('dev_message');
        message = (field.id+" can now be modified");
        dev_div.innerHTML = dev_div.innerHTML+"<br>"+message;
        field.focus();
    }
}
函数预检查字段(字段、表单){
if(字段只读){
//ses=“”;
//res=getAccessRequest(field.id、form.id、ses);
//跳过此测试的条目之前的服务器端检查
//假设允许输入,则必须取消只读设置
field.readOnly=false;
dev_div=document.getElementById('dev_message');
message=(field.id+“现在可以修改”);
dev_div.innerHTML=dev_div.innerHTML+“
”+消息; field.focus(); } }
html部分

    <form action="#edit.1.product.label" 
        id="input.product.label" 
        method="post" 
        name="product.label" 
        class="form-style">
      Label:<br>
      <input id="1.product.label" 
            name="input" 
            type="text" 
            placeholder="label" 
            onFocus="preCheckField(this,this.form)"
            readonly>
    </form><br>
    DEVELOPER OUTPUT:
    <div id="dev_message">
    </div>


标签:

开发人员输出:
更改只读时,表单元素不应已经具有焦点,以便iOS Safari注册更改的状态

屏幕上的键盘现在将按预期显示

function preCheckField(field, form) {
  if (field.readOnly) {
    field.blur(); // iOS needs this before a change of the readOnly
    // ses = "<?php echo $session['ukey']; ?>';
    // res = getAccessRequest(field.id, form.id, ses);
    // server side check before entry is skipped for this test
    // assuming entry was allowed by getAccessRequest readonly can be unset
    field.readOnly = false;
    dev_div = document.getElementById('dev_message');
    message = (field.id + " can now be modified");
    dev_div.innerHTML = dev_div.innerHTML + "<br>" + message;
    field.focus();
  }
}
函数预检查字段(字段、表单){
if(字段只读){
field.blur();//iOS在更改只读之前需要此字段
//ses=“”;
//res=getAccessRequest(field.id、form.id、ses);
//跳过此测试的条目之前的服务器端检查
//假设getAccessRequest readonly允许输入,则可以取消设置
field.readOnly=false;
dev_div=document.getElementById('dev_message');
消息=(field.id+“现在可以修改”);
dev_div.innerHTML=dev_div.innerHTML+“
”+消息; field.focus(); } }