How to set a field to number only? | XM Community
Skip to main content
We are asking a lot of questions which should be only answered by numbers. How is it possible to restrict a survey field only to numbers? Does this automatically result in the "number keyboard" showing up directly when the survey is used on a mobile phone?



Thanks

Topher
You can change a text input field to an html5 number input field using JavaScript. For example:

```

jQuery("#"+this.questionId+" .InputText").attr('type', 'number');

```

Mobile devices will automatically pop up the numeric keyboard when a number field gets focus.



Depending on your need, you may need to add additional attributes like step, min, etc. You should still use Qualtrics Content Validation - Content Type - Number.
Thank you! This is helpful!



How do I enter the javascript?
Click on the cog next to the question:

!



Add the line of JavaScript to the addOnload function. It is only an example for a simple text entry question. You may need to modify it based on your question. As I wrote earlier, you may also need to add additional attributes.
Hi

I'm also trying to set multiple fields to 'number only'. The Java script works very well. However, I noticed that it is still possible to type the letter 'e'. Would there be a possiblity to change that?

Thanks

Anneleen
> @Anneleen said:

> Hi

> I'm also trying to set multiple fields to 'number only'. The Java script works very well. However, I noticed that it is still possible to type the letter 'e'. Would there be a possiblity to change that?

> Thanks

> Anneleen



@Anneleen ,



Paste the following code in js(OnReady) of your question.



jQuery("#"+this.questionId+" .InputText").attr('type', 'number');



document.querySelector(".InputText").addEventListener("keypress", function (evt) {

if (evt.which != 8 && evt.which != 0 && evt.which < 48 || evt.which > 57)

{

evt.preventDefault();

}

});
> @Anneleen ,

>

> Paste the following code in js(OnReady) of your question.

>

> jQuery("#"+this.questionId+" .InputText").attr('type', 'number');

>

> document.querySelector(".InputText").addEventListener("keypress", function (evt) {

> if (evt.which != 8 && evt.which != 0 && evt.which < 48 || evt.which > 57)

> {

> evt.preventDefault();

> }

> });

>

>



Hello @Anneleen,



The code of @LaT , will work for you but it will also prevent "+ and -", if you just want to prevent "e" from input than use following code:



jQuery("#"+this.questionId+" .InputText").attr('type', 'number');



document.querySelector(".InputText").addEventListener("keypress", function (evt) {

console.log(evt.which);

if (evt.which ==101 || evt.which ==69)

{

evt.preventDefault();

}

});
@Anneleen,



'e' is there to allow for scientific notation. If you don't want to allow 'e', you can update the JS to remove it as soon as it is typed.

```

var input = jQuery("#"+this.questionId+" .InputText");

input.attr('type', 'number');

input.on('input', function() { this.value = this.value.replace(/e/g, ''); });

```
Is it possible to modify this line of code

`jQuery("#"+this.questionId+" .InputText").attr('type', 'number');`

so that it only allows positive integers? This would mean that if the number in the box is zero, the "arrow down" that replaces 0 with -1 disappears.
> @DanielE said:

> Is it possible to modify this line of code

> `jQuery("#"+this.questionId+" .InputText").attr('type', 'number');`

> so that it only allows positive integers? This would mean that if the number in the box is zero, the "arrow down" that replaces 0 with -1 disappears.

Yes:

```

jQuery("#"+this.questionId+" .InputText").attr({'type':'number','min':'0'});

```

I posted a question on this earlier but have since had it sorted - not sure how to delete so just editing the comment!


Leave a Reply