いいね!数

0

閲覧数
455

XpagesでJavaScript上のpromptからコメントを書かせてその値をデータに保存するボタンを作りたいのですが、
promptはクライアントサイドでしか動かないようで、データ保存はサーバーサイドでしか出来ないようです。
このためpromptで入力した値が保存出来ずに困っています。
サーバーサイド側でpromptを記述した場合は実行エラーが起きます。

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
 <xp:button value="ボタン" id="button1">
  <xp:eventHandler event="onclick" submit="false">
   <xp:this.script><![CDATA[var com=prompt("コメントを記入してください。","");]]></xp:this.script> <---CSJS側
   <xp:this.action><![CDATA[#{javascript:doc1.replaceItemValue("Comment1",com);}]]></xp:this.action> <---SSJS側
  </xp:eventHandler>
 </xp:button>
 </xp:view>

こういう場合どうすればいいのでしょうか?

サーバー情報: | クライアント情報: | 
カテゴリ:アプリ開発 - XPages | タグ:
  | 質問日時:2014/06/06 15:01:06

回答・コメント

いいね!数

1

例えば、こういうのはどうでしょう?

csjsでのpromptで設定した値は「編集ボックスコントロール」のvalueに格納します。

var tmp = prompt('何か入力してくれよ', 'デフォルト値');
document.getElementById( "#{id:tmpVar}" ).value = tmp;

ssjsでは、getComponent( "編集ボックスコントロール名" ).getValue()で取得します。

var getVar = getComponent( "tmpVar" ).getValue();

この時、編集ボックスコントロールのスタイルに「display:none」を設定しておけば、画面上では非表示になります。(可視のチェックボックスを外してはダメです)。

 

 

回答日時:2014/06/06 17:06:16

いいね!数

2

おかげざまでボタンが思った通りの動きをしました。
スタイルの制御で非表示の編集ボックスが

 <xp:inputText id="inputText1" style="display:none"

で出来るとは知りませんでした。

ありがとうございました。

回答日時:2014/06/09 9:01:31

いいね!数

1

補足なんですが、編集ボックスの代わりに「非表示の入力」コントロールを使用することもできます。
名前はちょっと分かりにくいですが、画面に出力される HTML タグは <input type="hidden"> になります。
何もしなくても非表示になるコントロールなので、スタイルでの display:none は不要です。

デフォルトではコントロールビューに表示されていないのですが、「その他」を選択して表示されるダイアログの中から、「コアコントロール」>「非表示の入力」を選択すると利用することができます。

参考まで。

回答日時:2014/06/09 12:28:30