2017-01-13 8 views
0

レコードのビューモードでワークフローで追加されたボタンを非表示にすることができるかどうか質問したいと思います。ワークフローはロックされているため、アクションを無効にすることは選択肢ではありません。ワークフローで追加されたボタンを削除するビュー

ユーザーイベントスクリプトbeforeLoadを使用してレコードのビューモードでクライアントスクリプトを呼び出そうとしています。コードは次のようになります。

form.setScriptを使用したユーザーイベントスクリプト。 idで

//User Event Script 
function callClientScript(type, form) { 
    if (type == 'view') { 
     form.setScript('customscript_client_script'); 
    } 
} 

クライアント:customscript_client_script:

//Client Script 
function removeButton() { 
    document.getElementById('HTML Id of button to hide').style.display = 'none'; 
} 

残念ながら、これは動作しません。私は調査し、私が見つけたすべての例では、ボタンをクリックしてクライアントスクリプトをバインドしてクリックすると実行されます。ユーザーイベントスクリプトに次のコード行を追加します。

form.addButton('custpage_my_button', 'Button Test', 'removeButton()'); 

私はこれをテストして正常に動作します。しかし、ページが読み込まれた後で自動的に "removeButton()"関数を実行する必要があります。

+0

はpageInit上で実行されているclientscriptですか?そうでない場合は、試してみてください。 –

+0

@AdolfoGarzaこんにちは、クライアントスクリプトは展開されていません。実際、私の研究に基づいている必要はありません。しかし、私はまだ関数をpageInitに入れようとしましたが、まだ動作しません。コメントthoをありがとう。 – Jet

+0

UserEventから呼び出す必要はありませんが、clientscriptだけを使用している場合は機能します。 Usereventなしで試してみてください。 –

答えて

0

これを達成するには、DOMのハッキングを使用する必要があります。 beforeLoadの間に作成されたinlineHTML本体フィールドをクライアントコードのコードでデフォルト値として設定された文字列として使用し、<script>タグで囲んでJavaScriptを注入する必要があります。

のSuiteScript 2.0でこのような何か:

var injectScriptField = form.addField({ 
     id : 'custpage_injectscript', 
     type : UIMODULE.FieldType.INLINEHTML, 
     label : 'Inject Script Field' 
    }); 
injectScriptField.defaultValue = '<script>alert("Hello");</script>'; 
+0

ちょっと@AdolfoGarza、これはうまくいった!本当にありがとう。 私はinlineHTMLでそれを行うことができないのか分かりませんでした。 このフィールドはデフォルトでは隠されていますか?私はトランザクションのどこでもそれを見つけることができません。また、追加するには、フィールドを非表示に設定しようとしましたが、なんらかの理由で動作しません。 もう一度おねがいします! – Jet

+0

私はフィールドが隠されているとは思わない、あなたは少なくともラベルを見ることができるはずです。カスタムタブの下にロードされている可能性があります。 –

+0

インラインフィールドにはラベルが表示されません。 – vVinceth

関連する問題