我创建了一个启用/禁用提交按钮的功能,我想让它在用户在文本字段中输入内容时运行。
这是我的代码:
<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();
就像函数enableDisablePostButton()不存在一样......有谁知道为什么以及我该怎么办?
答案 0 :(得分:1)
我认为将脚本标记放在表单标记之上应该可以解决问题。 enableDisablePostButton函数在form标记之后定义,因此无法找到该函数。
<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>
答案 1 :(得分:1)
我发现了问题,伙计们!实际上,javascript块没有被加载,因为它是异步获取的(ajax)。我现在发现了这个,我直接在onkeyup属性中设置了javascript代码:
onkeyup="this.form.messageText.value.trim() == ''? this.form.postMessage.disabled='disabled': this.form.postMessage.disabled='';"
感谢所有的帮助!