在插件中的表单提交上运行JavaScript验证脚本

时间:2015-09-15 作者:Krøllebølle

我创建了一个小的自定义插件,它只是一个HTML表单。HTML表单为echo\'它包含一个小的JavaScript函数,我想在提交时运行它。然而,我无法让它发挥作用,我也不确定我做错了什么。是否不允许以这种方式使用JavaScript?如果没有,正确的方法是什么?

点击submit按钮时,运行下面的代码段不会执行任何操作。

echo "
    <script type=\\"text/javascript\\">
    function validateForm()
    {
        alert(\\"FOOO\\");
        return false;
    }
    </script>
    <h1>Header</h1><br>
    <form method=\\"post\\" onsubmit=\\"validateForm()\\">
    <input type=\\"submit\\" value=\\"Submit me\\" /><br>
    </form>
";

Update:

下面是整个插件,只需进行一个小测试。JavaScript控制台只显示jQuery警告:JQMIGRATE:jQuery。fn。live()已弃用。我不确定这是从哪里来的,但我不直接使用jQuery。

当我激活插件并单击按钮时,页面上会重新加载按钮和所有内容,但消息是,它已发布不显示。因此,似乎没有提出POST请求。删除脚本和onsubmit 从PHPecho 产生相同的行为。

<?php
/*
Plugin Name: Test Plugin
*/

// Create plugin menu.
add_action(\'admin_menu\', \'create_test_plugin_menu\');

function create_test_plugin_menu()
{
    add_menu_page(\'The Test Plugin\', \'Test Plugin\', \'administrator\', __FILE__, \'setup_test_plugin\');
}

function setup_test_plugin()
{
    $submit_name = \'test_button\';

    if ( $_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST[$submit_name]) )
    {
        echo "Yes, it was posted!";
    }
    else
    {
        echo "
            <script type=\\"text/javascript\\">
            function validateForm()
            {
                alert(\\"FOOO\\");
                return false;
            }
            </script>
            <h1>Header</h1><br>
            <form method=\\"post\\" onsubmit=\\"validateForm()\\">
            <input type=\\"submit\\" name=\\"{$submit_name}\\" value=\\"Submit me\\" /><br>
            </form>
        ";
    }

}

?>
下面是从JavaScript控制台复制到HTML源的内容。

<script type="text/javascript">
function validateForm()
{
    alert("FOOO");
    return false;
}
</script>
<h1>Header</h1><br>
<form method="post" onsubmit="validateForm()">
<input type="submit" name="test_button" value="Submit me" /><br>
</form>

2 个回复
最合适的回答,由SO网友:Milo 整理而成

两个问题-

validateForm 是WordPress核心中现有的javascript函数,请将其更改为其他函数。始终使用唯一字符串作为前缀,以防止出现这些问题。

你的onsubmit 需求return 已添加:onsubmit="return your_function()"

SO网友:dev

您好,您可以通过wp enqueue脚本在插件中包含javascript。关于表单,您可以创建一个短代码来显示它。让我给你举个例子:-

  add_action(\'wp_enqueue_scripts\',\'ir_jscripts\');
   function ir_jscripts()
   {
       wp_enqueue_script( \'frontend_script\', plugin_dir_url(__FILE__).\'/js/frontend_scripts.js\', array(\'jquery\'), \'3.3.5\', true );

   }
之后,您可以声明一个短代码并在那里使用您的表单:-

  add_shortcode(\'login-form\',\'login_form_callback\');
   function login_form_callback()
   {
       $data = "your form here";
       return $data;
   }
之后,您可以使用快捷码[登录表单]将表单显示在任何位置。

在js文件js/frontend\\u脚本中。js在插件文件夹中,您可以编写js代码。

希望对你有帮助。

谢谢