10

Is it has any way to get value from Select Option as Integer by default ?

from select here

<select id="lesson_per_class" >
 <option value="">&nbsp;</option>
 <option value="1">1 Lesson</option>
 <option value="2">2 Lessons</option>
 <option value="3">3 Lessons</option>
 <option value="4">4 Lessons</option>
</select>

When I tried to get their value to calculate, I found that it return as String and can't use to calculate here

var lesson_per_class = $('#lesson_per_class').val();
alert('value is ' + ( 10 + lesson_per_class )); 
// it give result as 10x instead of 1x 

currently, the way I solved is parseInt(), but I need to know, is it has anyway to get it as Integer by default?

1
  • 1
    you could override jquery's .val() function to call parse int, but that may have some adverside side effects Commented Jul 15, 2015 at 15:37

2 Answers 2

10

From the spec you can see the value is a DOMString so no, you cannot get an integer by default.

http://www.w3.org/TR/html5/forms.html#the-option-element

For Java and ECMAScript, DOMString is bound to the String type because both languages also use UTF-16 as their encoding.

[NamedConstructor=Option(optional DOMString text = "", optional DOMString value, optional boolean defaultSelected = false, optional boolean selected = false)]
interface HTMLOptionElement : HTMLElement {
           attribute boolean disabled;
  readonly attribute HTMLFormElement? form;
           attribute DOMString label;
           attribute boolean defaultSelected;
           attribute boolean selected;
           attribute DOMString value;

           attribute DOMString text;
  readonly attribute long index;
};
Sign up to request clarification or add additional context in comments.

1 Comment

after 5 years, is this still the case?
6

No, there isn't - val() always returns a string. You have to use parseInt() as you already found out yourself.

There is an index() method, which might work in this case (because the first option has index 0):

$('#lesson_per_class option:selected').index()

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.