错误Wordpress jQuery表单错误说未引用函数?

时间:2018-09-06 05:03:22

标签: javascript php jquery wordpress wordpress-theming

我正在用javascript构建emi计算器,以便在wordpress网站中使用。问题是我在控制台中收到以下错误。 未捕获的ReferenceError:未定义calculateEMI     在HTMLInputElement.onchange 我的代码如下

HTML

select name, state from my table where (state IS NOT NULL) OR (name != 'mary');

我对jquery的代码如下,请告诉我我错了。

<table>
        <tr>
            <th>Outstanding Principle</th>
            <th>Interest Rate (%)</th>
            <th>Tenure </th>
            <th></th>
            <th>EMI</th>
        </tr>
        <tr>
            <td>
                <input type="text" id="outstanding_principle" onchange="calculateEMI(this);">
            </td>
            <td>
                <input type="text" id="interest_rate" onchange="calculateEMI(this);">
            </td>
            <td>
                <input type="radio" id="years" name="selection" value="years" onchange="calculateEMI(this);" /> Years
                <input type="radio" id="months" name="selection" value="Months" onchange="calculateEMI(this);" /> Months    
            </td>
            <td>
                <input type="text" id="tenure" onchange="calculateEMI(this);">
            </td>
            <td>
                <input type="text" readonly="true" id="emi">
            </td>
        </tr>
    </table>

我正在使用页面构建器。另请注意,控制台也在顶部显示了此信息。 JQMIGRATE:已安装迁移版本1.4.1

3 个答案:

答案 0 :(得分:0)

您的代码工作正常。

function calculateEMI(){
            var emi = 0;
            var P =0;
            var n = 1;
            var r = 0;

            if(jQuery("#outstanding_principle").val !== ""){
                P = parseFloat(jQuery("#outstanding_principle").val());
                if(jQuery("#interest_rate").val !== ""){
                    r = parseFloat(parseFloat(jQuery("#interest_rate").val()) / 100);
                }

                  if(jQuery("#tenure").val() !== ""){
                      n = parseFloat(parseFloat(jQuery("#tenure").val()));
                  }



            }
             if (P !== 0 && n !== 0 && r !== 0 && jQuery("#years").is(':checked')){
                 n = n * 12;
                 emi = parseFloat((P * r / 12) * [Math.pow((1 + r / 12), n)] / [Math.pow((1 + r / 12), n) - 1]);


            jQuery("#emi").val(emi.toFixed(2));
             }else if(P !== 0 && n !== 0 && r !== 0 && jQuery("#months").is(':checked')){
                  emi = parseFloat((P * r / 12) * [Math.pow((1 + r / 12), n)] / [Math.pow((1 + r / 12), n) - 1]);

                jQuery("#emi").val(emi.toFixed(2));
             }



        }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
        <tr>
            <th>Outstanding Principle</th>
            <th>Interest Rate (%)</th>
            <th>Tenure </th>
            <th></th>
            <th>EMI</th>
        </tr>
        <tr>
            <td>
                <input type="text" id="outstanding_principle" onchange="calculateEMI(this);">
            </td>
            <td>
                <input type="text" id="interest_rate" onchange="calculateEMI(this);">
            </td>
            <td>
                <input type="radio" id="years" name="selection" value="years" onchange="calculateEMI(this);" /> Years
                <input type="radio" id="months" name="selection" value="Months" onchange="calculateEMI(this);" /> Months    
            </td>
            <td>
                <input type="text" id="tenure" onchange="calculateEMI(this);">
            </td>
            <td>
                <input type="text" readonly="true" id="emi">
            </td>
        </tr>
    </table>

答案 1 :(得分:0)

  • 代码存在错误。
  • 某些其他代码可能有错误。
  • 使用开发者工具栏检查错误。
  • 使用calculateEMI();代替calculateEMI(this);

function calculateEMI() {
    var emi = 0;
    var P = 0;
    var n = 1;
    var r = 0;

    if ($("#outstanding_principle").val !== "") {
        P = parseFloat($("#outstanding_principle").val());
        if ($("#interest_rate").val !== "") {
            r = parseFloat(parseFloat($("#interest_rate").val()) / 100);
        }

        if ($("#tenure").val() !== "") {
            n = parseFloat(parseFloat($("#tenure").val()));
        }
    }
    if (P !== 0 && n !== 0 && r !== 0 && $("#years").is(':checked')) {
        n = n * 12;
        emi = parseFloat((P * r / 12) * [Math.pow((1 + r / 12), n)] / [Math.pow((1 + r / 12), n) - 1]);


        $("#emi").val(emi.toFixed(2));
    } else if (P !== 0 && n !== 0 && r !== 0 && $("#months").is(':checked')) {
        emi = parseFloat((P * r / 12) * [Math.pow((1 + r / 12), n)] / [Math.pow((1 + r / 12), n) - 1]);

        $("#emi").val(emi.toFixed(2));
    }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table border="1">
    <tr>
        <th>Outstanding Principle</th>
        <th>Interest Rate (%)</th>
        <th>Tenure Type</th>
        <th>Tenure</th>
        <th>EMI</th>
    </tr>
    <tr>
        <td>
            <input type="text" id="outstanding_principle" onchange="calculateEMI();">
        </td>
        <td>
            <input type="text" id="interest_rate" onchange="calculateEMI();">
        </td>
        <td>
            <input type="radio" id="years" name="selection" value="years" onchange="calculateEMI();" /> Years
            <input type="radio" id="months" name="selection" value="Months" onchange="calculateEMI();" /> Months
        </td>
        <td>
            <input type="text" id="tenure" onchange="calculateEMI();">
        </td>
        <td>
            <input type="text" readonly="true" id="emi">
        </td>
    </tr>
</table>

答案 2 :(得分:0)

我尝试了您的代码,最初与您的错误相同,但是我注意到您没有关闭 script 标记。我关闭了 script 标签,并尝试了代码,错误消失了。

希望这对您也有帮助。