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();

firebug を使用したデバッグ

関数 enableDisablePostButton() が存在しなかった場合のようなものです...誰かが理由と私に何ができるか知っていますか?

4

2 に答える 2

1

form タグの上に script タグを配置するとうまくいくと思います。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 に答える