AJAX の学習。私は次の AJAX スクリプトを持っています。主にナビゲーション (バックエンド php) に使用しています。
function ajaxFunction(linked) {
var ajaxRequest;
var loading = $('#loading');
if(loading.length > 0) {
loading.css('display', 'block');
}
try {
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e) {
// Internet Explorer Browsers
try {
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data
// sent from the server and will update
// div section in the same page.
ajaxRequest.onreadystatechange = function() { **//READY STATE HERE!**
if(ajaxRequest.readyState == 4) {
var ajaxDisplay = $('#wrapper');
loading.css('display', 'none');
ajaxDisplay.html(ajaxRequest.responseText);
if($('#search_field').length > 0) {
$('#search_field').focus();
}
if($('#year').length > 0) {
$('html').scrollTo('#year');
}
startValidation(); **// VALIDATION FUNCTION HERE!**
}
}
// Now get the value from user and pass it to
// server script.
if(linked == 'addNewPage' || linked == 'add') {
var queryString = "?page=add";
queryString += "&action=customer&add=new&ajax=ajaxRequest";
} else if(){} etc...
h5validate プラグインをダウンロードして、既に配置されている HTML5 検証を利用しました。問題は、AJAX を介してコンテンツをロードすると、.ready 関数が DOM からバインド解除されて機能しないことです。ReadyState==4 の後に関数を呼び出してみましたが、まだ起動しません。関数は、直接(AJAXなしで)ナビゲートして使用すると機能します:
window.onload = startValidation();
トリガーの検証:
function startValidation() {
$('.row').h5Validate({
errorClass:'red'
});
}
ここでどこが間違っていますか?