Call Javascript onchange event by programmatically

2020-01-27 05:51发布

the problem I'm facing is this:

  • I have a textbox for a date range along side a calendar control.
  • When the user selects a date from the calendar, it fills that date into the textbox
  • When this happens I want to fire a javascript function, however, the 'onchange' event doesn't seem to happen.

I'd ideally like to be able to add the event as an attribute to the textbox, something like:

txtCreateDate.Attributes.Add("onchange", string.Format("JSfunction({0},'{1}');", arg1, arg2));

more info: The date is entered into the textbox in c#. The calendar control has an eventhandler on the page. When a date is selected, the eventhandler puts the date into the textbox. I have tried setting the focus to the textbox at this point, then putting an onBlur attribute on the textbox, but the textbox never seems to get focus.

I suppose I could directly call the javascript function at this point doing ClientScript.RegisterClientScriptBlock or something like that, but that seems sloppy and never works like I want it to.

8条回答
2楼-- · 2020-01-27 06:08

You're misinterpreting what the onchange event does when applied to a textarea. It won't fire until it loses focus or you hit enter. Why not fire the function from an onchange on the select that fills in the text area?

Check out here for more on the onchange event: w3schools

查看更多
劫难
3楼-- · 2020-01-27 06:14
狗以群分
4楼-- · 2020-01-27 06:19

You can fire the event simply with

document.getElementById("elementID").onchange();

I dont know if this doesnt work on some browsers, but it should work on FF 3 and IE 7+

查看更多
叼着烟拽天下
5楼-- · 2020-01-27 06:19

Onchange is only fired when user enters something by keyboard. A possible workarround could be to first focus the textfield and then change it.

But why not fetch the event when the user clicks on a date? There already must be some javascript.

查看更多
Animai°情兽
6楼-- · 2020-01-27 06:20

You're population is from the server-side. Using the registerclientscript will put the script at the beginning of the form.. you'll want to use RegisterStartupScript(Block) to have the script placed at the end of the page in question.

The former tries to run the script before the text area exists in the dom, the latter will run the script after that element in the page is created.

查看更多
贼婆χ
7楼-- · 2020-01-27 06:26

You can put it in a different class and then call a function. This works when ajax refresh

$(document).on("change", ".inputQty", function(e) {

//Call a function(input,input);
});
查看更多
登录 后发表回答