【问题标题】:jQuery changing the response text from a formjQuery 更改表单的响应文本
【发布时间】:2016-12-19 07:26:32
【问题描述】:

首先该站点是http://emiralmedia.com/site/tennishero,它只是用于在将站点启动到单独的域之前对其进行测试。

您好,我想通过 stackoverflow 帮助更改 CRM 联系表单的响应错误,我设法将其集成到 wordpress 中。该表单与 javascript 链接,以将从 wordpress 站点表单发送的消息与另一个平台集成。 (客户关系管理)。 现在我有这个联系表格的代码:

<div class="main-content">
  <div class="form-mini-container">
    <form FormHash="29074-1vmo1w4eti26ekzhtj8e" action="https://r3.minicrm.ro/Api/Signup" method="post" class="form-mini">
      <div class='form-row'>
        <input name="Contact[1181][LastName]" id="Contact_LastName_1181" language="RO" type="text" placeholder="Name and surname" />
      </div>

      <div class='form-row'>
        <input name="Contact[1181][Phone]" id="Contact_Phone_1181" language="RO" type="text" placeholder="Phone" />
      </div>

      <div class='form-row'>

        <input name="Contact[1181][Email]" id="Contact_Email_1181" language="RO" type="text" placeholder="Email" />
      </div>





      <div id="Response_29074-1vmo1w4eti26ekzhtj8e" style="display: none;" class="Response raspuns"></div>
      <input id="Submit_29074-1vmo1w4eti26ekzhtj8e form-row form-last-row" type="Submit" value="LET´S GET IN TOUCH" class="button2">
    </form>
  </div>
</div>

当我想发送带有联系表格的消息并且忘记添加“姓名”、“电话”或“电子邮件”时,它会向我发送其他语言的 ResponseError,例如:

&lt;span class="ResponseError" style="transition: none; line-height: 0px; border-width: 0px; margin: 0px; padding: 0px; letter-spacing: 0px; font-weight: 400; font-size: 14px;"&gt;Name and surname este obligatoriu&lt;/span&gt;

我想用我的自定义消息更改消息....而不是 CRM 的默认消息。当您尝试发送消息时会出现跨度。我猜来自javascript。 https://r3.minicrm.ro/api/minicrm.js?t=1470730609

我尝试制作这个脚本,但没有任何效果。

if (window.location.pathname == '/site/tennishero/') {
  jQuery('.Response span').each(function() {
    if (jQuery(this).text() == 'Name and surname este obligatoriu') jQuery(this).text('Name si required');
  });
}
if (window.location.pathname == '/site/tennishero/') {
  jQuery('.Response span').each(function() {
    if (jQuery(this).text() == 'Telefon este obligatoriu') jQuery(this).text('Phone is required');
  });
}
if (window.location.pathname == '/site/tennishero/') {
  jQuery('.Response span').each(function() {
    if (jQuery(this).text() == 'Email este obligatoriu') jQuery(this).text('Email is required');
  });
}

有什么想法吗?谢谢。

【问题讨论】:

  • 将代码放入处理AJAX响应并将span添加到DOM的函数中。

标签: javascript php jquery html wordpress


【解决方案1】:

英文版(以下为罗马尼亚文版)

通常,如果要更改元素的 text/html,则应使用 innerHTML (js) 或 html() (jquery)。在您的情况下,当您运行该代码时,该元素不在页面上(它不存在),它会在一段时间后出现,具体取决于用户,因此您的脚本不会更改任何内容。您的 CRM 脚本似乎是从外部源加载的,因此您似乎无法在提交按钮上使用 onclick 或编辑通过 ajax 收到的消息。因此,您可以使更改错误消息的脚本按时间间隔运行(在本例中为 10 毫秒,以立即更改文本)。

罗马尼亚语版本

由于您来自罗马尼亚,我们在那里有专门的团队,所以有上面文字的翻译:

在 mod normal 中,cand vreti sa modificati continutul unui element de pe pagina, va folositi de innerHTML in JavaScript sau de html() in JQuery。在 cazul de fata, elementul pe care vreti sa il modificati nu apare odata cu toata pagina, ci atunci cand utilizatorul apasa pe un buton si greseste ceva in formular, deci daca veti rula cand se incarca site-ul ceva gen $(".eroare").html("eroare");, elementul respectiva nu se va "schimba",fiindca el inca nu exista。 Din pacate nu puteti nici simula ceva in genul onclick, pentru cazul in care vizitatorul apasa butonul de trimitere, nici nu puteti modifica direct codul CRM si mesajul primit prin ajax, fiindca, din cate am observat, scriptul pentru formular este unul extern, care comunica cu serverul (nu am studiat in amanunt)。 Asadar, o metoda pe care o puteti folosi este aceea de a programa codul care modifica textul sa se repete la un anumit interval de timp, iar daca gasste acel element cu clasa ResponseError (din cate am vazut), sa ii schimbe continutul。 Acesta ar trebui sa ruleze foarte des, pentru ca utilizatorului sa nu ii apara mai intai textul original iar apoi sa i se schimbe。 Codul de mai jos ia toate elementele cu clasa ResponseError si le modifica continutul, o data la 10milisecunde。一个 fost testat pe pagina dvs web。

脚本

setInterval(function() {
    var response_errors = document.querySelectorAll('.ResponseError');
    Array.prototype.forEach.call(response_errors, function(elements, index) {
        document.getElementsByClassName("ResponseError")[index].innerHTML="AICI E TEXTUL ERORII";
    });
}, 10);

如果您有任何相关问题,请发表评论。

【讨论】:

  • @CristianMergea 不客气!没问题。欢迎使用 Stack Overflow!
猜你喜欢
  • 2018-02-01
  • 2014-06-21
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 2015-03-23
相关资源
最近更新 更多