如何在WordPress页面中插入Html/JavaScript表单?

时间:2016-09-12 作者:rpbtz

我试图在WordPress页面中插入一个小表单,该页面根据用户输入进行小计算并返回答案。最初,我尝试复制整个内容(HTML和JS(在<script> 标签),它可以很好地显示HTML表单,但尝试运行JS不起作用。

JS如下所示:

function calculateX(){
    var inputA, inputB, total;
    inputA = document.form.inputA.value;
    inputB = document.form.inputB.value;
    total = inputA + inputB * 10;
    document.getElementById("result").innerHTML = parseInt(total);
}
HTML表单如下所示:

<form name="form">
    InputA: <input type="text" name="inputA" /><br />
    InputB: <input type="text" name="inputB" /><br />
    <input type="button" value="Calculate" onclick="calculateX()" /><br />
    Your result is: <b><span id="result"></span></b>
</form>
后来,我尝试创建一个插件,在将JS添加到calculate.js 文件看起来是这样的:

 <?php
 /*
 Plugin Name: Calculate
 */
 function calculate() {
      wp_register_script(\'calculate\', plugins_url(\'/js/calculate.js\'), __FILE__), array(\'jquery\'), false);
      wp_enqueue_script(\'calculate\', plugins_url(\'/js/calculate.js\'), __FILE__);
 }
 add_action(\'wp_enqueue_scripts\', \'calculate\');
 ?>
然而,这两种解决方案都不起作用。我对JavaScript非常陌生,这是我第一次尝试自己在WordPress中实现这样的表单,所以我不完全确定它出了什么问题。

表单显示得非常好,但单击“计算”按钮时,它不会执行任何操作。

EDIT: See @RRikesh\' comments below on the process of fixing this. The code as it stands above works for me now.

2 个回复
SO网友:RRikesh

你有很多问题:

1。WordPress部分:

您的函数连接到wp_enqueue_scripts 应该是这样的:

function wpse238953_calculate() {
      wp_enqueue_script(\'calculate\', plugins_url(\'/js/calculate.js\'), __FILE__), array(\'jquery\'), false);
 }
 add_action(\'wp_enqueue_scripts\', \'wpse238953_calculate\');
请注意wp_enqueue_scriptswp_enqueue_script

2。HTML/JS部分:让我们添加一些id 到两个输入字段,以便更容易将其定位

<form name="form">
    InputA: <input type="text" id="inputA" name="inputA" /><br />
    InputB: <input type="text" id="inputB" name="inputB" /><br />
    <input type="button" id="calculate" value="Calculate" /><br />
    Your result is: <b><span id="result"></span></b>
</form>
然后重写JS并使用一些jQuery(因为您将其添加为依赖项):

jQuery(document).ready(function($){
    \'use strict\';
  $(\'#calculate\').mousedown(function(){
    var valueA = parseFloat( $(\'#inputA\').val(), 10 ),
        valueB = parseFloat( $(\'#inputB\').val(), 10 ),
        total = ( valueA + valueB ) * 10;
    
    $(\'#result\').text( total );
  });
});
了解:

SO网友:Aniruddha Gawade

使用jQuery:

首先调试并检查函数是否被调用。尝试alert() 在JS函数中。

<form name="form">
    InputA: <input type="text" class="inputA" name="inputA" /><br />
    InputB: <input type="text" class="inputB" name="inputB" /><br />
    <input type="button" value="Calculate" onclick="calculateX()" /><br />
    Your result is: <b><span id="result"></span></b>
</form>

function calculateX(){
    total = jQuery(\'inputA\').val() + jQuery(\'inputA\').val();
    jQuery(\'#result\').html(total);
}

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果