• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Javascript Question: Keep vars updated as form vars change

Hi Guys,

Is there a way to declare a local var that is kept updated as form input changes?

I'd like to be able to declare a var that represents the contents of a form field.

If I declare the var before any input is entered into the form field, I have to update the var again before I do any comparisons.

Basically, I'd like to declare something early on like this:

var myPassword = document.forms["registerForm"]["password"].value;

So that anytime I reference myPassword it's value is the current state of the field.

For instance, if I set the var early, it's just going to be blank. But then if someone updates the field, I'd have to set the var again to get it updated. Can I get around that?
 
Hi Guys,

Is there a way to declare a local var that is kept updated as form input changes?

I'd like to be able to declare a var that represents the contents of a form field.

If I declare the var before any input is entered into the form field, I have to update the var again before I do any comparisons.

Basically, I'd like to declare something early on like this:

var myPassword = document.forms["registerForm"]["password"].value;

So that anytime I reference myPassword it's value is the current state of the field.

For instance, if I set the var early, it's just going to be blank. But then if someone updates the field, I'd have to set the var again to get it updated. Can I get around that?

A few things.

In browser stuff, excluding some of the newer stuff, javascript is not allowed to run at the same time as user input is happening and vice versa. So if you declare

Code:
var myPass = getPass();

at the beginning of your event handling function or whatever, you are guaranteed to have the current form value. What you can't do (and really shouldn't do) is create a variable at global scope and expect it to automatically update. You can manually update that variable (don't) but really your better bet is to not rely on a global variable and instead look up the value at the appropriate place.
 
Hi Guys,

Is there a way to declare a local var that is kept updated as form input changes?

When you say this, do you mean that this var should be updated the instant the form input changes? Or do you want it to update after the form gets submitted?
 
This is called databinding and it is very common problem in form based software development. Databinding is the solution of keeping data objects and UI components synchronized. Several frameworks exists to solve this for javascript/html and the one I like the most is called knockout JS. Everytime the client updates a UI component it handles writing that to the object. In two-way databinding if you update the object, the framework handles updating the UI component.

http://knockoutjs.com/index.html
 
The simplest way I can think of (and I avoid doing as much as possible in Javascript) is to use an onblur or onchange method for the fields that simply set your global variable to the desired value.
 
Why not just use a function instead?

function getMyPassword() { return document.forms["registerForm"]["password"].value; }
 
i do this in angular all day long, it's just part of the framework the way it binds.

I actually just put in a resume to a f500 company looking for a UI designer. The guy said they just started using Angular for everything. He said it was no big deal if I hadn't used it before as long as I was already comfortable with jQuery. I just have to learn about it.
 
I actually just put in a resume to a f500 company looking for a UI designer. The guy said they just started using Angular for everything. He said it was no big deal if I hadn't used it before as long as I was already comfortable with jQuery. I just have to learn about it.

yeah if you know how to do javascript and mvc, you will get it pretty quickly. i was still fairly new to js (less than a year total) when i started doing angular on my current project, and now i feel A LOT more comfortable with js overall, and same with angular.
 
Back
Top