(Not: benim asıl soru benim OpenID ile bağlantılı değildi - erişimi olan herkes özgün soru kaldırmak olabilir - eğer ben buna göre yanıt / / güncelleme düzenlemek edebilmek için burada yineden ediyorum: / questions/1554916/how-to-use-the -livevalidation-javascript-kütüphane-özel-doğrulamak-fonksiyonu bu harika woudl!)
Heya Dostlarım,
Ben bu yüzden lütfen bana ayı tüm bu için çok yeni!
Ben alanların livevalidation denetimi ile bir form oluşturmak için mangaged, ve aynı zamanda bir Usename geçerli olup olmadığını görmek için bir ajax / json çek ile var. Ben standart canlı doğrulama ile birlikte ince almak gibi.
İşte şu anda ben ne bir demo: link text
Ajax adı check yanıtın vermek için yöntem, basit bir vize yapmak için bir mesaj ile bir değişir, bu yüzden ajax yanıtının yönetmek için bir livevalidation çek kullanmak istiyorum - ben sonra, boş kontrol (bunları birlikte bağlayabilirsiniz sonra geçersiz, sonra da ok pass) ve benim yanıtları çıkış aynı yol var, kullanın.
Şu anda bu formu kodu vardır:
<?php
$script = "
$('uname').addEvent('blur', function(e) {
e = new Event(e).stop();
// Show the spinning indicator when pressing the submit button...
$('indicator1').setStyle('display', 'block');
var username = $('uname').value;
if ( username != '' ) {
var url = 'index.php?option=com_chronocontact&chronoformname=custom_livevalidation_test&task=extra&format=raw';
var jSonRequest = new Json.Remote(url, {
onComplete: function(r) {
$('indicator1').setStyle('display','none');
if ( r.username_ok ) {
$('username_msg').setHTML(\"<span style='color:green;'>Username '\"+username+\"' is OK</span>\");
} else {
$('username_msg').setHTML(\"<span style='color:red;'>Sorry, username '\"+username+\"' is already taken</span>\");
}
}
}).send({'username': username});
}
});
";
global $mainframe;
if ($mainframe->isSite())
{
$doc =& JFactory::getDocument();
$script = "
window.addEvent('domready', function() {
$script
});
";
$doc->addScriptDeclaration($script);
};
$script = "
var uname = new LiveValidation('uname', {
validMessage: 'This is a valid username',
wait: 500
});
uname.add(Validate.Presence, {
failureMessage: 'Username must not be blank!'
});
uname.add(Validate.Format, {
pattern: /^[a-zA-Z\-_]{4,16}$/,
failureMessage: 'Username must be between 4 and 16 characters'
});
";
global $mainframe;
if ($mainframe->isSite())
{
$doc =& JFactory::getDocument();
$script = "
window.addEvent('domready', function() {
$script
});
";
$doc->addScriptDeclaration($script);
};
?>
<div>
<span class="cf_label">Username: </span>
<input style="" id="uname" name="uname" class="" title="" value="" type="text">
<span id="indicator1" style="display: none"><img src="/images/hourglass.gif" alt="checking..." /></span>
<div id='username_msg'></div>
</div>
<br />
<input type='submit' name='submit' value='submit' />
Bu arka planda çalışır json parçası olmak:
<?php
$json = stripslashes($_POST['json']);
$json = json_decode($json);
if ( $json->username ){
$db =& JFactory::getDBO();
$query = "
SELECT COUNT(*)
FROM `jos_users`
WHERE `username` = ".$db->quote($json->username).";";
$db->setQuery($query);
$response = (bool) !$database->loadResult();
$response = array('username_ok' => $response );
echo json_encode($response);
}
?>
Yani livevalidation belgelerine bakarak, bu moda özel bir doğrulama kullanabilirsiniz:
// Pass a function that checks if a number is divisible by one that you pass it in args object
// In this case, 5 is passed, so should return true and validation will pass
Validate.Custom( 55, { against: function(value,args){ return !(value % args.divisibleBy) }, args: {divisibleBy: 5} } );
Ama ben bunu doğru şekilde yapıyorum şüphe - Ben bu çok şifreli bulma am - Ben 'fonksiyonu (r)' Ben işaret etmek gerekir düşünürdüm orada tüm hazır şu
Herkes herhangi bir ışık tutabilecek, ben bir çözüm ortaya çıkarmak hem de onu anlamak için (hoping!) duyuyorum!
* Updates *
Ben şimdi validate.custom kısmı için bu kod çalışması gerektiğine inanıyoruz yol:
var uname = new LiveValidation('uname', {
validMessage: 'This is a valid username',
wait: 500
});
uname.add(Validate.Presence, {
failureMessage: 'Username must not be blank!'
});
uname.add(Validate.Custom('uname', { against: function(r){
return !(r.username_ok) }, args: {} } ),
failureMessage: 'This username is already taken'
});
uname.add(Validate.Format, {
pattern: /^[a-zA-Z\-_]{4,16}$/,
failureMessage: 'Username must be between 4 and 16 characters'
});
";
Ancak ben bir mimari sorunu var gibi görünüyor - canlı doğrulama anında cevap istiyor, ve ajax arka planda yer alır. Ben 'gözlemci desen' araştırmak için bir öneri benim için tamamen yeni bir konsept şu oldu - Ben genellikle grafik tasarım ve bir cms yapısı tarafı ile oynuyorum!
Ben geri gelmek ve bu çalışma almak zorunda olacak gibi başka bir yardım / açıklama takdir!