【问题标题】:onload doesn't work in wordpressonload 在 wordpress 中不起作用
【发布时间】:2015-04-17 05:38:33
【问题描述】:

我创建了一个由我正在使用的 crm 生成的表单,以便在 crm 中查找表单输入。然后我将代码粘贴到wordpress上。它工作正常。然后我在某个字段上添加了一个日期选择器并在本地测试了所有这些。它仍然可以正常工作。当我在 wp 上上传所有必要的内容时,它不再起作用了。

我做了一些测试。这里有一些:

我在文件header.php的模板正文中添加了onload函数,但是,即使在源页面中有onload函数,日期选择器也不显示。

我尝试在页面内编写 javascript 代码,但它不起作用。

我尝试在 div 之后写 ,它仍然在本地工作,但在 wordpress 上没有。

我担心问题是我的页面无法通过相对路径加载文件,所以我使用了绝对路径。没有任何改变。

最终我尝试在本地文件上使用绝对路径,它仍然有效。

我最后想到的是:我的模板忽略了 javascript。但后来我意识到在同一页面中还有 2 个其他功能并且它们工作正常。

这是代码,也许我们可以修改它以达到我的目的。

<div id='crmWebToEntityForm' align='left' >
    <META HTTP-EQUIV='content-type' CONTENT='text/html;charset = UTF-8'>

    <form  action='https://************/crm/WebToContactForm' name=**************************** method='POST' enctype='multipart/form-data' onSubmit='javascript:document.charset="UTF-8"; return checkMandatery()' accept-charset='UTF-8'>
        <input type='text' style='display:none;' name='xnQsjsdp' value='*************' />
        <input type='hidden' name='zc_gad' id='zc_gad' value='' />
        <input type='text' style='display:none;' name='xmIwtLD' value='*****************' />
        <input type='text' style='display:none;' name='actionType' value='Q29udGFjdHM=' />
        <input type='text' style='display:none;' name='returnURL' value='*************************************' />
        <input type='text' style='display:none;' maxlength='20' name='CONTACTCF7' value='Applicant'/>
         <div id="cf-two-columns">
           <div id="left">
               <p>First Name *<br /><input type='text' style='width:250px;'  maxlength='40' name='First Name' /></p>

 <p>Last Name *<br /><input type='text' style='width:250px;' maxlength='80' name='Last Name' /></p>
              <p>Date Of Birth *<br /><input id="datepickr" readonly="readonly"  type="text" style="width:250px;" maxlength="20" name="Date of Birth" placeholder="dd/MM/yyyy"></p>



             <p>Email *<br /><input type='email' style='width:250px;' maxlength='40' name='Email' /></p>
               <p>Phone *<br /><input type='text'style='width:250px;' maxlength='50' name='Phone' /></p>
               <p> * These fields are required <br /></p>
           </div>
           <div id="right">
               <p>Address* <br /><input type='text' style='width:250px;' maxlength='250' name='Mailing Street' /></p>
               <p>Suburb or city* <br /><input type='text' style='width:250px;' maxlength='30' name='Mailing City' /></p>
               <p>Postcode* <br /><input type='text' style='width:250px;' maxlength='30' name='Mailing Zip' /></p>
                <p>Country* <br />
                <select style='width:250px;' name='Mailing Country'>
                    <option value='Select One'>Select one</option>
                    <option value='Afghanistan'>Afghanistan</option>
                    <option value='Albania'>Albania</option>
                    <option value='Algeria'>Algeria</option>

                </select>
               </p>
               <p>State* <br />
                    <select style='width:250px;' name='CONTACTCF9'>
                        <option value='Select One'>Select one</option>
                        <option value='Western Australia'>Western Australia</option>
                        <option value='New South Wales'>New South Wales</option>
                        <option value='Queensland'>Queensland</option>
                        <option value='ACT'>ACT</option>
                        <option value='South Australia'>South Australia</option>
                        <option value='Northern Territory'>Northern Territory</option>
                        <option value='Off Shore'>I am outside Australia</option>
                    </select>
               </p>

            </div>
           <div id="right1">
               <p>Current VISA*<br />
               <select onchange="showDiv(this)" id="CONTACTCF1" style='width:250px;' name='CONTACTCF1'>
                        <option value='Select One'>Select one</option>
                        <option value='Bridging'>Bridging</option>
                        <option value='DeFacto'>DeFacto</option>
                        <option value='Partner'>Partner</option>
                        <option value='Permanent'>Permanent</option>
                        <option value='Sponsored'>Sponsored</option>
                        <option value='Student'>Student</option>
                        <option value='Tourist'>Tourist</option>
                        <option value='Working Holiday'>Working Holiday</option>
                        <option value='2 Working Holiday'>2 Working Holiday</option>
                        <option value='Business application'>Business application</option>
                    </select>
               </p>

<p id="hide" style="display: none;">VISA Expiry Date *<br /><input readonly type='text' id="CONTACTCF81" style='width:250px;' maxlength='20' name='CONTACTCF81' placeholder='dd/MM/yyyy' />
</p>


<script>
function showDiv(elem){
   if(elem.value == 'Bridging') {
      document.getElementById('hide').style.display = "none";
} else if(elem.value == 'Select One') {
document.getElementById('hide').style.display = "none";
}
else {
document.getElementById('hide').style.display = "block";
}
}
</script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

<p>Passport Number *<br /><input type='text' style='width:250px;' maxlength='15' name='CONTACTCF2' /></p>
               <p>Passport Expiry Date *<br /><input readonly id="datepickr2" type='text' style='width:250px;' maxlength='15' name='CONTACTCF84' placeholder='dd/MM/yyyy' /></p>
<p>Nationality *<br /><input type='text' style='width:250px;' maxlength='20' name='CONTACTCF3' /></p>
            </div>
           <div id="right2">
               <p>Passport Upload *<br /><input type='file' name='theFile'></input></p>
               <br>
               <p>Enter this code<br /></p>
               <p><img id='imgid' style="border:1px solid black;" src='*****************************************'>
               <a href='javascript:;' onclick='reloadImg()'>Reload</a></p><br />
               <p><input type='text' style='width:250px;' maxlength='80' name='enterdigest' /></p><br />
               <p><input class="wpcf7-submit" style='font-size:12px;color:black' type='submit'  value='Submit' /> </p>
            </div>
        </div>
        <script>
            var mndFileds = new Array('First Name', 'Last Name', 'Email', 'Phone', 'Date of Birth', 'Mailing Street', 'Mailing City', 'Mailing Zip', 'Mailing Country', 'CONTACTCF2', 'CONTACTCF3', 'CONTACTCF81', 'CONTACTCF1', 'CONTACTCF84', 'CONTACTCF9');
            var fldLangVal = new Array('First Name', 'Last Name', 'Email', 'Phone', 'Date of Birth', 'Mailing Street', 'Mailing City', 'Mailing Zip', 'Mailing Country', 'Passport Number', 'Nationality', 'Visa Expiry Date', 'Current visa', 'Passport Expiry Date', 'State');
            function reloadImg() {
                if (document.getElementById('imgid').src.indexOf('&d') !== -1) {
                    document.getElementById('imgid').src = document.getElementById('imgid').src.substring(0, document.getElementById('imgid').src.indexOf('&d')) + '&d' + new Date().getTime();
                } else {
                    document.getElementById('imgid').src = document.getElementById('imgid').src + '&d' + new Date().getTime();
                }
            }
            function checkMandatery() {
                var name = '';
                var email = '';
                for (i = 0; i < mndFileds.length; i++) {
                    var fieldObj = document.forms['WebToContacts1328094000000077001'][mndFileds[i]];
                    if (fieldObj) {
                        if (((fieldObj.value).replace(/^\s+|\s+$/g, '')).length == 0) {
                            alert(fldLangVal[i] + ' cannot be empty');
                            fieldObj.focus();
                            return false;
                        } else if (fieldObj.nodeName == 'SELECT') {
                            if (fieldObj.options[fieldObj.selectedIndex].value == '-None-') {
                                alert(fldLangVal[i] + ' cannot be none');
                                fieldObj.focus();
                                return false;
                            }
                        } else if (fieldObj.type == 'checkbox') {
                            if (fieldObj.checked == false) {
                                alert('Please accept  ' + fldLangVal[i]);
                                fieldObj.focus();
                                return false;
                            }
                        }
                        try {
                            if (fieldObj.name == 'Last Name') {
                                name = fieldObj.value;
                            }
                        } catch (e) {}
                    }
                }
                try {
                    if ($***) {
                        var firstnameObj = document.forms['WebToContacts1328094000000077001']['First Name'];
                        if (firstnameObj) {
                            name = firstnameObj.value + ' ' + name;
                        }
                        $***.salesiq.visitor.name(name);
                        var emailObj = document.forms['WebToContacts1328094000000077001']['Email'];
                        if (emailObj) {
                            email = emailObj.value;
                            $***.salesiq.visitor.email(email);
                        }
                    }
                } catch (e) {}
            }
</script>
    </form>

</div>

                    <script src="http://getyourvisa.com.au/datepicker/codebase/dhtmlxcalendar.js"></script>
              <script>
        var myCalendar;
        function doOnLoad() {
            myCalendar = new dhtmlXCalendarObject(["datepickr","CONTACTCF81","datepickr2"]);
        }
    </script>

HERE 也是实时预览。

提前感谢所有愿意提供帮助的人。 DD

【问题讨论】:

  • 您好,欢迎来到 SO。请访问help center 以获取有关如何提问的提示。一方面,请从您的示例中删除不必要的代码。例如,下拉菜单中的 3 个选项就足够了
  • 好的,谢谢你的建议。我删除了选项,但我保留了整个代码,因为我不确定哪一个可能是问题。
  • onload 在哪里以及如何将其添加到正文中?永远不要使用&lt;body onload=".."&gt;,但现在你安装了它就使用它。我看不到你在哪里调用 doOnload。而是做$(function() { .... });
  • 你的意思是使用ready()函数吗?我不知道 javascript...我只是按照说明将数据选择器附加到表单...
  • $(function() { doOnLoad() });像这样?我应该把这个放在哪里?

标签: javascript html wordpress datepicker onload


【解决方案1】:

试试这个教程: https://jqueryui.com/datepicker/

也许您可以修改您的代码并将其插入教程中。

【讨论】:

  • 请不要发布 cmets 作为答案,直到您有足够的代表这样做。获得并不难
  • 我已经用过那个,效果很好,但我无法选择年份,如果有人(例如 1977 年出生的 qas)应该逐月返回太多
  • 嗯,很有趣。我去试试
【解决方案2】:
  1. 你加载了太多的 jQuery。你只需要拥有一次。 这破坏了您的选择器。如果我在网上搜索Load jQuery Once wordpress 我会得到类似的答案

如果您不知道如何删除这些,则需要向 WP 开发人员寻求帮助。对不起,我不是其中之一。

  1. 要加载 datepicker onload,使用这个

-

var myCalendar;
$(function() {
  myCalendar = new dhtmlXCalendarObject(["datepickr","CONTACTCF81","datepickr2"]);
});

而不是

var myCalendar;
function doOnLoad() {
   myCalendar = new dhtmlXCalendarObject(["datepickr","CONTACTCF81","datepickr2"]);
}

并从其他任何地方删除 doOnload

【讨论】:

  • 仍然无法正常工作...我知道有很多问题,但我只是复制并粘贴了 crm 给出的代码。
  • 你加载了多个 jQuery。你需要摆脱除一个以外的所有东西
  • 感谢您的帮助...不幸的是,我仍然无法使该代码正常工作.. 可能我犯了一些错误。我插入了整个代码,但没有任何改变。我还应该做什么?
  • 我已经更新了我的答案。您需要删除除一个以外的所有 jQuery.js - 这是您的主要问题。我想我数了3个或更多。我写的小提琴是为了证明日期选择器与我建议的代码一起工作
  • 您好,再次感谢您。不幸的是,我的模板似乎到处都加载了 jquery。我不知道如何解决它。有走走的吗?例如将表单作为 iframe 或类似的东西?
猜你喜欢
  • 1970-01-01
  • 2016-05-05
  • 1970-01-01
  • 2021-08-04
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多