Skip to Main Content

Java Development Tools

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How to allow only Number(0-9) in jsff ADF

Swathi BR-OracleNov 19 2015 — edited Nov 20 2015

Hi,

InputText should allow only numbers. I tried to implement using ClientListener and the below javascript but I am able to enter special characters like !@#$%^&*().

How to achieve this?

<af:inputText label="Days After Actual Project Start:"

                                   id="it10"

                                   value="#{ReviewDeadlineRuleEvents.daysAfterActProjectStart}"

                                   maximumLength="#{bindings.DaysAfterActProjStart.hints.precision}">

                        <f:validateLongRange minimum="0"/>

                        <af:convertNumber groupingUsed="false"

                                          pattern="#{bindings.DaysAfterActProjStart.hints.format}"/>

                        <af:clientListener method="filterForNumbers"

                                           type="keyDown"/>

                                       

                     </af:inputText>

javascript:

<af:resource type="javascript">
function filterForNumbers(evt) {
//get ADF Faces event source, InputText.js
var inputField = evt.getSource();

  var oldValue = inputField.getValue();

var ignoredControlKeys = new Array(AdfKeyStroke.BACKSPACE_KEY,AdfKeyStroke.DELETE_KEY);

//define the key range to exclude from field input
var minNumberKeyCode = 48;
var maxNumberKeyCode = 57;
var minNumberPadKeyCode = 96;
var maxNumberPadKeyCode = 105;
//key pressed by the user
var keyCodePressed = evt.getKeyCode();
//if it is a control key, don't suppress it
var ignoreKey = false;

   for (keyPos in ignoredControlKeys) {

    if (keyCodePressed == ignoredControlKeys[keyPos]) {
        ignoreKey = true;
        break;
    }

   }

//return if key should be ignored
if (ignoreKey == true) {
    return true;
}
//filter keyboard input
if (keyCodePressed &lt; minNumberKeyCode || keyCodePressed &gt; maxNumberPadKeyCode) {
    //set value back to previous value
    inputField.setValue(oldValue);
    //no need for the event to propagate to the server, so cancel
    //it
    evt.cancel();
    return true;
}
if (keyCodePressed &gt; maxNumberKeyCode &amp; keyCodePressed &lt; minNumberPadKeyCode) {
    //set value back to previous value
    inputField.setValue(oldValue);
    evt.cancel();
    return true;
}

}

</af:resource>

Thanks in Advance.

This post has been answered by kdario on Nov 20 2015
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 18 2015
Added on Nov 19 2015
6 comments
2,201 views