2012-09-20 84 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