0

所以我有一个文本框,我在其中添加了一个 markAsException 的 onchange 事件。

我的 javascript 是 -

function markAsException(recordID) {
    //alert("Exception");

    //mark exception column
    document.getElementById("ctl00_cpMain_lblScrollException_" + recordID).innerText = "Exception";
    document.getElementById("ctl00_cpMain_lblScrollException_" + recordID).style.color = "#FF0000";
    document.getElementById("ctl00_cpMain_tdScrollException_" + recordID).style.backgroundColor = "#99CCFF";

    //enable comments ddl and remove blank (first item)
    document.getElementById("ctl00_cpMain_ddlCommentId_" + recordID).disabled = false;
    document.getElementById("ctl00_cpMain_ddlCommentId_" + recordID).focus();
    document.getElementById("ctl00_cpMain_ddlCommentId_" + recordID).options[0] = null;
}

我想要做的是,当用户更改文本框中的值时,将列标记为“异常”,然后将焦点放在下拉列表中,他们必须在其中选择异常原因。

这就是发生的事情.. 如果我在那个文本框上并更改它,然后选项卡,它会跳到下拉列表。

但是,如果我更改了值,然后简单地单击表单上的另一个文本框,我不会关注下拉列表。

我将如何做到这一点?

4

1 回答 1

0

我建议使用 JQuery 的change()函数。

优点是跨不同浏览器会更稳定。

就像是:

    $('#<%= TextBox1.ClientID %>').change(function(){
      // extract the recordID from the textbox - perhaps with an attribute?
      markAsException(recordID);
    });

我的评论越来越长,所以我正在扩展:

查看 JQuery文档以在页面完成加载时进行设置。如果 tb 是您的文本框的 ID,您的选择器将是

$('#<%= tb.ClientID %>')

我建议你替换你的代码并使用

tb.Attributes.Add("recordID", recordId.ToString());

这会将您需要的 ID 添加到文本框标签上。进入我上面概述的功能后,您可以使用以下选择器在 javascript 中获取 recordID

var recordID = $('#<%= TextBox1.ClientID %>').attr('recordID');

全部一起

  $(document.ready(function(){
    $('#<%= tb.ClientID %>').change(function(){
      var recordID = $('#<%= tb.ClientID %>').attr('recordID');
      if(recordID){
        markAsException(recordID);
      }
    });
  });
于 2012-06-27T15:40:04.477 回答