gpt4 book ai didi

javascript - 为什么我在文本区域中输入内容时收到替换函数错误

转载 作者:行者123 更新时间:2023-11-28 15:25:52 24 4
gpt4 key购买 nike

我有两个单独的 jquery 弹出窗口,其中一个是从 GridView 数据填充的:

//THIS IS THE POPUP WHICH PRE POPULATES THE TEXTAREA VALUE FROM THE GRIDVIEW
<asp:UpdatePanel runat="server" ID="upPop" UpdateMode="Conditional">
<ContentTemplate>
<div id="popupContactEM">
<a id="popupContactCloseEM" title="Close Window">x</a>
<div id="dvFourthEM" class="mainFirst">
<div id="leftdiv1EM" class="leftdivspec"><sup style="color: #FF0000; font-weight: bold;">*</sup>Message:<br /><br /><b style="font-size: xx-small;">Character Count: </b><input maxlength="4" size="4" id="charCountE" style="border: none; font-size: xx-small; color: #E55302;" disabled="disabled" /><br /><b style="font-size: xx-small;">Word Count: </b><input maxlength="4" size="4" style="border: none; font-size: xx-small; color: #E55302;" id="wordCountE" disabled="disabled" /></div>
<div id="rightdiv1EM" class="rightdivspec"><asp:TextBox ID="tbMessageEM" ClientIDMode="Static" runat="server" TextMode="MultiLine" Columns="30" Rows="5"></asp:TextBox></div>
</div>
</div>
<div id="backgroundPopupEM"></div>
</ContentTemplate>
</asp:UpdatePanel>

<div id="popupContact">
<a id="popupContactClose" title="Close Window">x</a>
<div id="dvFourth" class="mainFirst">
<div id="leftdiv1" class="leftdivspec"><sup style="color: #FF0000; font-weight: bold;">*</sup>Message:<br /><br /><b style="font-size: xx-small;">Character Count: </b><input maxlength="4" size="4" id="charCount" style="border: none; font-size: xx-small; color: #E55302;" disabled="disabled" /><br /><b style="font-size: xx-small;">Word Count: </b><input maxlength="4" size="4" style="border: none; font-size: xx-small; color: #E55302;" id="wordCount" disabled="disabled" /></div>
<div id="rightdiv1" class="rightdivspec"><asp:TextBox ID="tbMessage" ClientIDMode="Static" runat="server" TextMode="MultiLine" Columns="30" Rows="5"></asp:TextBox></div>
</div>
</div>
<div id="backgroundPopup"></div>

我正在尝试显示任一弹出窗口的单词和字符计数,并且我有以下 JQuery:

$(document).ready(function () {
$("#tbMessage").keyup(function () {
WordCounter(this, 0);
});

$("body").on('keyup', "#tbMessageEM", function (e) {
WordCounter(this, 1);
});
});

function WordCounter(txt, whc) {

if (whc == 0) {
s = txt.value;
}
else {
s = txt;
}
if (s.length == 0) {
len = 0;
}
else {
m1 = s.replace(/\s/g, '+');
m = m1.replace(/^\s/g, '+');
len = countWords(m);
}
if (whc == 0) {
document.getElementById("charCount").value = s.length;
document.getElementById("wordCount").value = len;
}
else {
document.getElementById("charCountE").value = s.length;
document.getElementById("wordCountE").value = len;
}

}
function countWords(str) {

str1 = str.replace(/\+*$/gi, "");
str2 = str1.replace(/\++/g, ' ');
var temp = new Array();
temp = str2.split(' ');
return temp.length;
}

当未预先填充的弹出窗口打开时,我可以在 TextArea 中输入文本,它会给出计数。

当预填充的弹出窗口打开时,它确实会给出 TextArea 内文本的单词/字符计数,但是当我输入或删除任何内容时,出现以下错误:0x800a01b6 - JavaScript 运行时错误:对象不支持属性或方法“替换”:

enter image description here

请帮我解决错误。

最佳答案

我很确定这就是罪魁祸首:

if (whc == 0) {
s = txt.value;
}
else {
s = txt;//This is a Node object
}
...
m1 = s.replace(/\s/g, '+');

您有时会尝试从不存在的 HTML 元素对象中获取 .replace

编辑:我不完全确定您希望在这里实现什么目标。最明显的修复方法是确保您使用的是字符串,因此为了避免在节点对象上调用 .replace,请在 if 语句中添加另一个检查:

if (!s.replace || s.length == 0) {

尽管如此,这可能仍然缺少根本问题,即 s 可能应该是一个字符串开头。

关于javascript - 为什么我在文本区域中输入内容时收到替换函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28989519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com