2017-01-18 8 views
1

私はフォームを持っており、uppercase_valueというフィールドがあります。そのフィールドでは、大文字のみの値が必要なため、入力変換に@UpperCase(uppercase_value)を入れます。編集ボックス内の大文字

xpageには、編集ボックスとボタンがあります。編集ボックスは単純なデータバインディング(uppercase_valueにバインド)を使用し、ボタンは値を保存するためのものです。

私はボタンが重複値または空の値を保存しないようにしなければなりません。私は編集ボックスの近くに計算フィールドを置き、ボタンに次のコードを入れます。

//get the value from the edit box 
var newvalue = getComponent("inputText1").getValue(); 

//if edit box is empty, show message in the computed field 
if(newvalue =="" || newvalue ==null) 
{ 
    getComponent("computedField1").setValue("The field is empty"); 
} 
else 
{ 
    //check the value whether it is already existed or not 
    //use @DbLookup to find, newvalue is the keyword 
    var existedvalue = @DbLookup(@DbName(),"myview", newvalue,3); 

    //if the newvalue is same as the existedvalue, show message in the computed field 
    if(newvalue == existedvalue) 
    { 
     getComponent("computedField1").setValue("Duplicate value"); 
    } 
    else 
    { 
     document1.save(); 
    } 
} 

Iコードを実行する、私は予想通り、それが大文字でそれを保存し、小文字で値を入力し(例えば、私が編集ボックスにABCを入力し、その値がABCで返します)。 xpageをリフレッシュして同じ値をもう一度入力すると、値を保存することができ、ビューに2つの同じ値があることがわかります。

@DbLookupのビューを2回確認すると、最初の列がソートされるので、@DbLookupが正常に動作することを確信しています。

重複した値を保存できる理由は、実行形式の検証であると私は文書保存で選択します。したがって、編集ボックスに値を入力した後に保存ボタンをクリックするたびに、値がuppcaseに変更されてから保存されます。したがって、ページを更新して再び値を入力すると、@DbLookupは新しい値であると考えるので、小文字で入力するので、値が保存され、ビューに重複した値があります。

しかし、私が文書をオンに変更すると、フォームの検証が実行されたときに読み込まれます。それは動作しません。つまり、値を大文字に変更せず、小文字の値を保存します。

実際、私は大文字への変更について別の考えを持っています。エディットボックスでonkeypressイベントを使うつもりです。編集ボックスに入力値が入力されているときにユーザーがキャップロックボタンをオンにしようとしました

私はこれに続いてtableをonkeypressイベントに入れます。

if (thisEvent.keyCode == 20) 
{ 
    //alert("caps lock button pressed"); 
    return true; // not work, still can type lowercase 
// event.returnValue = true; // cannot type anything 
} 
else 
{ 
    return false; 
// event.returnValue = false; // cannot type anything 
} 

ただし、正しく動作しないため、編集ボックスに小文字を入力できます。

大文字で値を保存し、重複する値を保存しないようにするにはどうすればよいですか?

答えて

1

さまざまなオプションがあります。からの結果と値を比較する前に、あなたはすべてのプロパティ(uppercase="true")で書式を設定することができますonBlurイベントイベント

  • 使用道場テキストボックスコンポーネントへ

    • 変更アッパーケース
    • 利用@UpperCase() @DbLookup
    • 大文字小文字を区別しない比較(個人的に私は、Javaで動作し、常にApacheののStringUtilsが挙げられるが、その機能を提供することができるビルトインIBMのJava StringUtilクラスがあります)
    • Dominoを使用することができます文字列比較ライブラリを使用しますオブジェクトM odel(database.getView()View.getDocumentByKey(value, true))が一致する場合は、UNIDが同じでないことを確認します。 OpenNTF Domino APIは、この機能をView.checkUnique()ですぐに利用できます。

    ドミノ9.0を使用している場合、ボーナスとして使用できます。x(拡張ライブラリを使用する8.5.3)には@ ErrorMessage()があり、計算エラーの代わりにDisplay Errorsコントロールに表示される検証エラーメッセージをスローすることができます。 getComponent("intputText1").setValid(false)もそのコンポーネントをエラーとしてマークします。

  • +0

    優れた答えをありがとう!私の問題を解決する方法はたくさんあることを教えてください。 – beginner

    +0

    あなたのオプションを試しました。しかし、私はこれらのオプションを使用しようとするといくつか質問があります、私はこのポストでお願いしますか? (私はxpagesが弱いことを知っています.xpageについてもっと知ることができれば、より多くのxpageアプリケーションを開発したいと思っています) – beginner

    +0

    XPages Slackチャンネルがもっと適切かもしれません。https://xpages-slack.herokuapp.com/ –

    関連する問題