Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery event on value change of input hidden

I have this input hidden:

<input id="j_idt26:myValue" type="hidden" name="j_idt26:myValue" value="0?100?">

I want to alert "hey" the first time the value is set and then every time it changes.

I have something like this:

$(document).ready(function(){
    var $hello= $('[id$=myValue]');

    $hello.bind("change load", function(){
        alert('hey');
    });
});

But nothing is showing up.
If you can help
Thanks

like image 788
Loric- Avatar asked Jul 17 '13 08:07

Loric-


People also ask

How to detect value change on hidden input field in jQuery?

There two possible way to detect the value change on the hidden input field: By using bind() method. By using change() method.

How to detect value change in jQuery?

The change() is an inbuilt method in jQuery that is used to detect the change in value of input fields. This method works only on the “<input>, <textarea> and <select>” elements.

How can store hidden field value in jQuery?

var hiddenFieldValue = $("#hiddenFieldControlId"). val(); That's it. Replace the hiddenFieldControlId with the id attribute value of your hidden field and make sure jQuery referenced in the page.

How can access hidden field in asp net code behind?

Right click on project and select Add-->Add New Item and select Web Form. Add a new Web Form called "Default. aspx". Now, drag and drop the HiddenField Control on the page.


2 Answers

$(function(){
    var $hello= $('[id$="myValue"]');

    $hello.on("change", function(){ //bind() for older jquery version
        alert('hey');
    }).triggerHandler('change'); //could be change() or trigger('change')
});

Then, each time you change the value of targeted hidden inputs, trigger handler, e.g:

$('#j_idt26:myValue').val('0?200?').triggerHandler('change');

That's because onchange event is not fired automatically changing its value programatically.

like image 98
A. Wolff Avatar answered Sep 20 '22 14:09

A. Wolff


The change event is fired after the blur event on an input, in other words when the input loses focus. The MDN documentation describes this:

When the element loses focus after its value was changed, but not commited (e.g. after editing the value of or ).

Since the input is of type hidden there will never be any user interaction with the input meaning it will not change unless the client side script provided by your site changes it, which will not trigger the change event.

Here are two options:

Call change() explicitly

Whenever you modify the value of the hidden input call .change() to trigger the event.

$(document).ready(function(){
    var $hello= $('[id$=myValue]');

    $hello.on("change", function(){
        alert('hey');
    });

    $hello.val("Something");
    $hello.change();
});

Just call the code without the handler

Instead of using the event handler just execute the code you would have within the source.

$(document).ready(function(){
    var $hello= $('[id$=myValue]');
    $hello.val("Something");
    alert('hey');
});

Another thing I would like to mention is the selector can be scoped a little better.

    var $hello= $('input[id$=myValue]');

And if your using a new version of jQuery prefer on instead of bind as shown in the above example.

like image 39
Kevin Bowersox Avatar answered Sep 21 '22 14:09

Kevin Bowersox