2015-11-23 174 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