如何向管理界面表单的onSubmit添加一些javascrip验证?

时间:2014-04-21 作者:Don Rhummy

我有一个插件,可以将元框添加到管理界面,当用户在提交表单之前按下“更新”按钮时,我需要进行一些验证。

是否有WordPress操作或挂钩将我的函数添加到表单的onsubmit?或者我需要简单地这样做:

Pseudo code

var myInput = document.getElementById( "myMetaBoxInput" );

//Get form from input
var form = myInput.form;

//They have something already set
if ( form.onsubmit )
{
    var previousSubmit = form.onsubmit;

    form.onsubmit = function() {
        //do my code....

        //Call their function
        previousSubmit();
    }
} else form.onsubmit = myfunction;
执行上述操作的问题是,wordpress可能有一些代码发生在“更新”按钮的“单击”操作上,该操作将设置表单的onsubmit 到另一个功能并清除我的。

2 个回复
SO网友:Howdy_McGee

每个帖子/页面/帖子类型都围绕一个ID为的通用表单进行包装#post. 因此,如果您想在提交页面之前对其进行验证,只需说出以下内容:

jQuery(document).ready(function($){
    $(\'#post\').submit(function(){
        // Validate Stuff
        return false;
    });
});
然后,您将希望实际将javascript排队-View Codex

function my_enqueue($hook) {
    if ( \'edit.php\' != $hook ) {
        return;
    }

    wp_enqueue_script( \'my_custom_script\', plugin_dir_url( __FILE__ ) . \'myscript.js\' );
}
add_action( \'admin_enqueue_scripts\', \'my_enqueue\' );
至于你担心另一个提交处理程序会抵消你的,从我的测试来看,不管有多少提交处理程序返回true,如果1为false,表单将不会提交。

SO网友:raccol

此代码可能会帮助您。我没有在仪表板中尝试,但我在页面模板中使用了它。

 // JavaScript Document
function valide()
    {
        var re_email =/^([_a-zA-Z0-9-]+)(\\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\\.)+([a-zA-Z]{2,3})$/;
        var mail = document.kontakt.mail.value;
        var name = document.kontakt.name.value;
        var checked = true;

        if (name=="")
        {
        alert ("Please enter a name.");
        checked = false;
        }
        if ((re_email.test(mail))==false || mail.length==0)
        {
        alert ("Please enter a correct e-mail address");
        checked = false;
        }
        if(checked)
        {
        document.kontakt.method = "post";
        document.kontakt.action = "http://xxx";
        document.kontakt.submit();
        }
        return checked;
    }
 //WP-template
 <form onSubmit="return valide()" method="post" name="kontakt">
        <table>
          <tr>
            <td>Name *</td>
            <td><input name="name" type="text" size="20"></td>
          </tr>
          <tr>
          <td>E-Mail</td>
            <td><input name="mail" type="text" size="20"></td>
          </tr>
          <tr>
           <td colspan="2"><br />
            <input name="Senden" type="submit" value="Send"></td>
          </tr>
        </table>
  </form>

结束

相关推荐

是否在另一个域上托管wp-admin?

现在我有一个客户端运行WordPress,www.example.com.我正在使用另一种技术/语言开发一个新版本,该版本将托管在另一台服务器上。。但管理(WP)和数据库将保留在旧服务器上。所以基本上我需要指出www.example.com 到新主机(这里没有问题)并创建一个子域,如admin.example.com 这将指向安装了WP的旧服务器。我担心这会在存储时对数据库造成混乱options 和guids 对于帖子和附件URL。。。它们将存储为admin.example.com 而不是www.exam