<h:commandlink>在Safari浏览器中未执行操作

时间:2018-08-15 06:33:32

标签: css jsf safari jsf-2.2 mojarra

我在JSF中有一个简单的(ajaxified)commandLink,除了在iPhone上使用最新的Safari浏览器外,它在所有主流浏览器中都能正常运行。为了防止重复提交表单,我使用一个通用片段来禁用ajax开始状态上的按钮:

<h:commandLink id="submit" action="#{ListingBean.searchListings}" value="Search">
    <f:ajax onevent="preventDblClick"/>
</h:commandLink>

function preventDblClick(data) {  

  switch (data.status) {
      case "begin":
          data.source.disabled = true;
          // data.source.className = 'blocked';
          break;
      case "complete":
          data.source.disabled = false;
          break;
  }    
}

问题是,由于禁用状态,Safari无法提交操作。我还尝试为按钮设置一个CSS规则,以防止多次单击提交:

.blocked {
   pointer-events:none
}

但是在这种情况下,Safari也不会提交该动作。

更新

生成的html中的 return false 有问题:

<a id="submit" 
   onclick="mojarra.ab(this,event,'action',0,0,{'onevent':preventDblClick});return false">
     Search
</a>

即使我完全删除了ajax-tag,表单也不会提交,并且生成的输出看起来像:

 <h:commandLink id="submit" action="#{ListingBean.searchListings}">
       Search
 </h:commandLink>

<a id="submit" 
  onclick="mojarra.jsfcljs(document.getElementById('form-search'),{'submit':'submit'},'');return false">
  Search
</a>

为什么return false在这里?

由于越来越多的客户正在使用iPhone / Safari:如何解决此问题?

jsf版本是:

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.faces</artifactId>
    <version>2.2.14</version>
</dependency>

0 个答案:

没有答案