【问题标题】:javascript firing event when textbox changes programmatically文本框以编程方式更改时的javascript触发事件
【发布时间】:2023-04-10 20:11:01
【问题描述】:

我有一个应用程序,其中服务器正在向我需要编程的客户端发送数据。每个数据字符串都被发送到一个唯一的文本框。我想根据独立可选列表的状态在显示之前捕获这些数据并对其进行格式化。我无法使用 onchange 触发事件,因为它仅适用于用户的输入。有没有一种简单的方法可以做到这一点?我找不到一个直接的解决方案。

<input class="dios" id="diosinput" type="text" value="" data-ref="#source" data-path="/abc/0/input" />


<select class="widthed"> 
<option>Hex</option> 
<option>Binary</option> 
</select>
//my function 

function decToHex(d)
{
var displayHex = d.toString(16);

if(displayHex.length<2) displayHex = '0'+ displayHex;

return '0x'+ displayHex.toUpperCase();
}

【问题讨论】:

  • 服务器是否返回一个预填充的 HTML 文本框?
  • 不,它只是将信息字符串发送到具有所选 id 的框
  • 那为什么不在它被处理之前拦截它并做你的事情呢?
  • hmmm... 我不知道如何在这些数据到达文本框之前捕获它。服务器正在遍历所有盒子并根据它们的 id 向它们发送信息字符串。如果我能抓住它会很棒,但我看到的最简单的选择就是接收它,而不是尝试处理它。您还有其他解决方案吗?
  • 没有机制允许服务器向浏览器发送一些针对页面上文本输入的“信息字符串”。您的应用程序中必须有一些代码已经在处理这个问题,而这就是您需要进行更改的地方。

标签: javascript events textbox client onchange


【解决方案1】:

试试这个:

function fireEvent(element,event) {
  if (document.createEventObject) {
    // dispatch for IE
    var evt = document.createEventObject();
    return element.fireEvent('on'+event,evt)
  } else {
    // dispatch for others
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent(event, true, true ); // event type,bubbling,cancelable
    return !element.dispatchEvent(evt);
  }
}

fireEvent(document.getElementById('InsertIdOfYourInput'), 'change');

【讨论】:

  • 好的,但是如何将它与文本框和可选列表以及我的函数绑定?我用代码更新了我的帖子
【解决方案2】:

只有两种方法可以从服务器更改文本框:

  1. 当浏览器加载整个页面时

  2. 当浏览器向服务器发送 AJAX 请求并替换输入元素中的文本时

Web 服务器无法“将数据发送到文本框”。你可能有别的意思,但你缺少正确的词来表达它。

我可以从源代码中看到data-refdata-path。这表明 AJAX 用于从服务器获取新值并将其放入 DOM。

要更改此设置,请查看页面的整个源代码(包括所有 JavaScript 代码)并查找 pathdata-pathdata('path')data("path")

如果你找到发出请求的地方,你就会知道在哪里添加你自己的回调。

【讨论】:

  • 我很抱歉不准确。我知道你说的这部分在哪里。问题是我不能干扰那里的数据流。我需要做的是在我用文本框收到数据后以正确的方式格式化数据......可以做到吗?
  • JavaScript 更改 DOM 的一部分时不会触发任何事件,因此您必须更改原始回调。问题是您不知道如何执行此操作,但我们可以提供帮助。发布回调代码,我们会告诉你如何从外部对其进行修补(即,不更改原始源代码)。
【解决方案3】:
 function Evaluate() {
        var q1 = document.getElementById("<%=txtqty.ClientID %>").value
}

<asp:TextBox ID="txtqty" runat="server" CssClass="txtclass"  Width="40px" ValidationGroup="AddLoan" onchange="return Evaluate();" >

【讨论】:

    猜你喜欢
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多