1

我创建了一个启用/禁用提交按钮的函数,我希望它在用户在文本字段中键入内容时运行。

这是我的代码:

<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() 不存在一样......有谁知道为什么以及我能做什么?

4

2 回答 2

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>
于 2013-03-27T15:04:39.903 回答
1

我发现了问题,伙计们!事实上,javascript 块没有被加载,因为它是异步获取的(ajax)。我现在发现了这一点,并直接在 onkeyup 属性中设置了 javascript 代码:

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

感谢所有的帮助!

于 2013-03-27T17:47:22.680 回答