2011-11-12 43 views
3

我有一個Ajax和以相同的形式完整的請求。點擊鼠標點擊輸入框中的ajax,如果在鼠標點擊後立即在相同的輸入框上按回車鍵,則彈出一個令人討厭的錯誤,如下所示。混合Ajax和完整請求

「HTTP傳輸返回一個0狀態代碼。這通常是混合Ajax和全面的請求的結果,這通常是不需要的,對於性能和數據完整性的原因。」

在我的情況下輸入字段是使用AJAX一個單選按鈕。按Enter鍵會導致完整的請求。 我使用了BalusC的Javascript函數,它具有event.stopPropagation(),它適用於我,它用於文本輸入字段。它也適用於一個下拉列表。 但是同樣的event.stopPropagation()不能用於單選按鈕。 您可以查詢BalusC's answer以供參考。

下面是我的一段代碼,這似乎並沒有工作

<h:form id=blah...... onkeypress="enterToChange(event)"> 
.... 
</h:form> 

JavaScript函數

function enterToChange(event){ 
if (event.keyCode==13 && event.target.id.match('radiobutton_id'){ 
event.stopPropagation(); // Don't bubble up. 
event.preventDefault(); // Prevent default behaviour (submitting the form). 
event.target.onchange(); // Trigger onchange where key was actually pressed. 
} 
} 

我用螢火地看到,如果子句中的語句執行,但出於某種原因,錯誤仍然彈出,並立即呈現整個頁面。我需要避免在任何情況下的錯誤。

任何答案的高度讚賞。 感謝

+1

它適合我。也許你在''組件上有'onchange =「submit()」'?請展示您的觀點。 – BalusC

+0

問題已解決。推入輸入正在調用submit(),並且沒有onclick提交按鈕。所以添加Javascript函數返回false。感謝您的代碼BalusC –

+0

發佈這個答案並接受它。這樣做完全可以。 – WTK

回答

2

回車勢必提交。因此,如果事件keyCode爲13,且事件目標ID與單選按鈕相匹配,則提交按鈕的onclick事件應該激發一個返回false的JS函數。