使用onkeyup调用javascript函数

时间:2013-03-27 14:45:28

标签: javascript html function onkeyup

我创建了一个启用/禁用提交按钮的功能,我想让它在用户在文本字段中输入内容时运行。

这是我的代码:

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

2 个答案:

答案 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='';"

感谢所有的帮助!