2012-09-20 48 views
1

我正在使用wordpress,并且我有一个需要验证的表单。我有一个输入字段来检查以确保它是一个有效的YouTube网址。 我发现这个漂亮的小方法使用jQuery ..使用php函数验证表单字段和jquery ajax

$("input#video_url").change(function(){ 
    var matches = $(this).val().match(/^(?:https?:\/\/)?(?:www\.)?youtube\.com\/watch\?(?=.*v=((\w|-){11}))(?:\S+)?$/); 
    if (matches) { 
     $(".video-validation").append("<span>Valid</span>"); 
    } else { 
     $(".video-validation").append("<span>This is not a valid youtube url</span>"); 
    } 
    }); 

但后来我读了这样的验证需要与PHP的完成,因此它不能在客户端进行更改。

我一直在寻找一些明确的教程,但找不到一个。所以我的问题是:

我怎么能把这个URL的验证成为我的functions.php中的PHP函数,然后结合使用jquery在表单可以被处理之前做ajax验证?

回答

0

只是做一个AJAX后机智的链接:

$.post('validate.php', function(data) { 
    $('.result').html(data); 
}); 

,做同样想在你的validate.php文件是这样的:

validate.php

$result = preg_match(/^(?:https?:\/\/)?(?:www\.)?youtube\.com\/watch\?(?=.*v=((\w|-){11}))(?:\S+)?$/); 
if ($result) { 
    die('<span>Valid</span>'); 
} else { 
    die('<span>This is not a valid youtube url</span>'); 
} 

你最终代码可能如下所示:

$("input#video_url").change(function(){ 
    $.post('validate.php', function(data) { 
    $('.video-validation').html(data); 
    }); 
}); 
0

享受这一点正则表达式:

if (!preg_match('/^(http:\/\/){0,1}(www\.){0,1}youtube\.com\/watch\?v=([a-z0-9\-_\|]{11})/i', $gyoutube, $matches)) 
{ 
    $error = "This ain't a Youtube video"; 
} 

此外,PHP验证后进行,而不是之前的表格已经提交。

+0

不一定。您可以将ajax称为'onSubmit'处理程序。 – Peon

+0

是的,但它没用。对于客户端网站,在这种情况下,没有理由让AJAX代替使用JS验证。两者都可以被轻松入侵。 – Vlad