.net列表框触发事件从javascript中选择

时间:2012-02-17 16:03:08

标签: c# javascript jquery asp.net .net

当我尝试在即7 8 9

中从listbox asp.net用户控件中选择触发事件时
$("select").trigger("change")
$("select").trigger(jQuery.Event("change", {target: $("select").get(0)}));
$("select").trigger(jQuery.Event("change", {srcElement: $("select").get(0)}));

预定义的.net脚本在预定义的函数中失败,无人可以更改

function ValidatorOnChange(event) {
  if (!event) {
      event = window.event;
  }
  Page_InvalidControlToBeFocused = null;
  var targetedControl;
  if ((typeof(event.srcElement) != "undefined") && (event.srcElement != null)) {
      targetedControl = event.srcElement;
  }
  else {
      targetedControl = event.target;
  }
  var vals;
  if (typeof(targetedControl.Validators) != "undefined") {
      vals = targetedControl.Validators;
  }
  else {
      if (targetedControl.tagName.toLowerCase() == "label") {
          targetedControl = document.getElementById(targetedControl.htmlFor);
          vals = targetedControl.Validators;
      }
  }
  var i;
  for (i = 0; i < vals.length; i++) {
      ValidatorValidate(vals[i], null, event);
  }
  ValidatorUpdateIsValid();
}

因为事件突然为空,所以无法找到event.target.Validatorsevent.srcElement.Validators。如何正确触发变更事件?

2 个答案:

答案 0 :(得分:-1)

您应该可以使用$("select").change();触发并使用$("select").change(function(){ //code here });

处理该事件

答案 1 :(得分:-1)

<。>在.net生成的脚本调查期间,我每秒有超过9000个facepalm。

我认为如果你是菜鸟,你应该在写东西之前学习。但超过9000名微软的印第安人并不这么认为

var original_trigger = $.fn.trigger;
$.fn.trigger = function(type, data) {
    if($.browser.msie) {
        $(this).each(function() {
            window.ValidatorOnChange({
                target: this
            });
        });
        return $(this).trigger("CustomChange", data);
    }
    return original_trigger.apply(this, arguments);
}

这也很糟糕。最好的方法是列出更改侦听器,删除indian的ValidatorOnChange侦听器并正确地重新绑定它。但不幸的是,我没有多少时间深入研究这个问题