5

Xpages カスタム コントロールを使用して、検索フィールド (id:searchField) と検索ボタン (id:searchButton) を作成しました。検索フィールドに onkeypress イベントを追加して、searchButton へのクリックをトリガーするようにしました。その後、searchButton はページをリロードしますが、URL パラメータは検索フィールドから取得されます。問題は、ページがリロードされますが、検索フィールドで ENTER を押しても検索パラメーターが URL に追加されず、searchButton を押すと正しく機能することです。使用したコードは次のとおりです。

(searchField の onkeypress にコードを追加)

if (typeof thisEvent == '未定義' && window.event) { thisEvent = window.event; }
if (thisEvent.keyCode == 13)
{
    document.getElementById("#{id:searchButton}").click();
}

(searchButton の onclick にコードを追加)

window.location.href = "test.xsp?search=" + document.getElementById("#{id:searchField}").value;

IE と Firefox でテストしましたが、どちらも問題があります。サンプルの HTML ファイルを作成したところ、正しく動作しました。これは XPages のバグですか、それとも何か不足していますか?

4

4 に答える 4

7

「.click()」の後にこれを追加します。

       thisEvent.preventDefault();
       thisEvent.stopPropagation(); 

それは問題を解決するはずです;-)

于 2012-02-05T15:35:33.233 に答える
6

入力フィールドのonKeyPressイベントを

if (typeof thisEvent == 'undefined' && window.event) { thisEvent = window.event; }
if (thisEvent.keyCode == dojo.keys.ENTER)
{
    dojo.byId("#{id:searchButton}").click();
    thisEvent.preventDefault();
}

問題を解決するのに十分なはずです。ブラウザ間の互換性のために、私は

dojo.keys.ENTER

dojo.byId("id");

プロパティ/メソッド。dojo.keysオブジェクトには、特定のキーが押されたことを確認するためのさらに多くのプロパティがあります:ここを参照してください。

マーク

于 2012-02-06T09:15:04.263 に答える
0

私は最近XPageでこれを実行しましたが、次のスクリプトはクロスブラウザーで機能します。

var e = arguments[0] || window.event;
if ( e.keyCode==13 || e.which==13) {
  window.location.href = 'searchResults.xsp?query=' + 
      encodeURI(dojo.byId('#{id:searchInput}').value));
  return false;
}

お役に立てれば、

ジェレミー

于 2012-02-05T00:29:15.220 に答える
0

xpage によって生成された ID に問題があります。同じ問題がありました。xPages は、view:_id1:_id のようなカスタム コントロールの ID の前に付けます... 完全な ID を指定してみてください

于 2012-02-25T11:55:18.567 に答える