2013-03-27 21 views
1

我創建了一個函數來啓用/禁用提交按鈕,並且我希望它在用戶在文本字段中鍵入內容時運行。使用onkeyup調用javascript函數

這裏是我的代碼:

<form name="sidebarPostMessageForm" action="../app/NewMessageAsynch.action"> 
    <input type="hidden" name="conversationId" value="${conversationId}"/> 
    <lalahtml:textarea id="messageText" name="messageText" onkeyup="enableDisablePostButton();" ></lalahtml:textarea> 
    <input type="button" name="postMessage" id="postMessage" onclick="if(this.form.messageText.value.trim().length>0){sidebar_postMessage();this.disabled='disabled'}" value="<ezmi18n:message key="doSendMessage.Label" />"/> 
</form> 
<script type="text/javascript"> 
function enableDisablePostButton(){ 
    if (document.getElementById("messageText").value.trim() == "") { 
     document.getElementById("postMessage").disabled="disabled"; 
    } else { 
     document.getElementById("postMessage").disabled=""; 
    } 
} 
</script> 

當我測試了一下,我得到了以下JavaScript錯誤:

錯誤:

的ReferenceError:enableDisablePostButton沒有定義 enableDisablePostButton ();

debugging with firebug

這就像如果函數enableDisablePostButton()是不存在的......沒有人知道爲什麼,我該怎麼辦?

+0

似乎工作正常,當我嘗試它..是否有更多的腳本? – 2013-03-27 14:47:41

+0

不..這是所有..:S – periback2 2013-03-27 14:48:35

+0

@ periback2嘗試設置一個jsfiddle,我試過了,它爲我工作。 – Uby 2013-03-27 14:49:38

回答

1

我發現問題了,夥計們!事實上,JavaScript塊沒有被加載,因爲它被異步提取(ajax)。我現在發現了這一點,我直接在onkeyup屬性中設置javascript代碼:

onkeyup="this.form.messageText.value.trim() == ''? this.form.postMessage.disabled='disabled': this.form.postMessage.disabled='';" 

感謝您的幫助!

1

我認爲將腳本標籤放置在表單標籤上方應該有效。 enableDisablePostButton函數是在窗體標籤之後定義的,因此它無法找到該函數。

<script type="text/javascript"> 
function enableDisablePostButton(){ 
    if (document.getElementById("messageText").value.trim() == "") { 
     document.getElementById("postMessage").disabled="disabled"; 
    } else { 
     document.getElementById("postMessage").disabled=""; 
    } 
} 
</script> 
<form name="sidebarPostMessageForm" action="../app/NewMessageAsynch.action"> 
    <input type="hidden" name="conversationId" value="${conversationId}"/> 
    <lalahtml:textarea id="messageText" name="messageText"  onkeyup="enableDisablePostButton();" ></lalahtml:textarea> 
    <input type="button" name="postMessage" id="postMessage" onclick="if(this.form.messageText.value.trim().length>0){sidebar_postMessage();this.disabled='disabled'}" value="<ezmi18n:message key="doSendMessage.Label" />"/> 
</form> 
+0

約定,所有應該在所有html代碼後添加javascript代碼/文件...這不應該解決問題:/ – periback2 2013-03-27 15:55:18

+0

這對我有效。 – TREMOR 2017-11-23 11:28:27