2015-11-23 148 views
0

我有下面的代码停止Ajax请求 - JSF

<rich:calendar enableManualInput="true" value="#{myBean.myDate}" 
    oninputblur="validateDate(this);"> 

    <a4j:ajax event="change" listener="#{myController.method()}" render="myPanel"></a4j:ajax> 

    <a4j:ajax event="inputchange" listener="#{myController.method()}" render="myPanel"/> 

</rich:calendar> 

正如你看到的oninputblur我调用javascript函数。如果validateDate返回false,我不想发送ajax请求到服务器。我该如何处理?

+0

你基本上忽略了函数的返回值。 – BalusC

+0

如何利用'validateDate'的返回值,以便我可以停止Ajax请求? – Junaid

+0

只需返回即可。 – BalusC

回答

0

在a4j:ajax上使用@onbeforesubmit(请参阅docs)。如果返回false,则Ajax请求将被取消。

在您的例子验证请求之前,火灾(blur之前因为change事件触发 - 尽管这看起来是依赖于浏览器)

+0

我从'rich:calendar'中删除'oninputblur'属性,并在'a4j:ajax'中放入'onbeforesubmit = validateDate(this);'。当它返回false时,它将ajax调用发送到服务器。 – Junaid

+0

你真的需要了解函数是如何工作的。 onbeforesubmit必须返回false,并且不返回任何内容。 'validateDate(this)'翻译成'validateDate(this); return undefined;' – Makhiel

+0

对不起'inbeforesubmit = validateDate(this);',放'onbeforesubmit =“return validateDate(this);”'。这样它实际上是从'validateDate'返回返回的标志。 – Bnrdo