var email = new Spry.Widget.ValidationTextField("email", "email", {maxChars:100, validateOn:["change"]}); var emailReinput = new Spry.Widget.ValidationTextField("emailReinput", "none", {validateOn:["change"],isRequired:false}); var checktext1 = new Spry.Widget.ValidationTextField("checktext1", "none",{validateOn:["change"] }); var checktext2 = new Spry.Widget.ValidationTextField("checktext2", "integer", {validateOn:["change"] , minChars:10 , isRequired:false }); var spryAge = new Spry.Widget.ValidationTextField("spryAge", "integer",{validateOn:["change"] , isRequired:false }); var sprycheckbox1 = new Spry.Widget.ValidationCheckbox("sprycheckbox1", {validateOn:["blur", "change"] ,minSelections:"1", maxSelections:"1"}); var sprytextarea1 = new Spry.Widget.ValidationTextarea("sprytextarea1", {counterType:"chars_count", counterId:"countsprytextarea1", validateOn:["change"], maxChars:2000, minChars:10, useCharacterMasking:false, isRequired:true}); // メールアドレスカスタムチェック var mailCheck = new Object(); mailCheck.onChange = function(me){ var retFlg = true; if (this.checkReinput()){ emailReinput.removeClassName($('emailReinput'),'textfieldReinputState' ); retFlg = true; }else{ emailReinput.addClassName($('emailReinput'),'textfieldReinputState' ); retFlg = false; } return retFlg; }; //メール再入力チェック mailCheck.checkReinput = function(){ var mail = $('txtMail'); var reMail = $('txtMailReinput'); var orgMail = $('txtMailOrg'); if (orgMail.value != mail.value){ //変更チェック対象 if (mail.value == reMail.value){ return true; }else{ return false; } }else{ //メールアドレス変更をやっぱやめた場合でも、再入力が入力されていたらチェック対象とする。 if (reMail.value != ""){ if (mail.value != reMail.value){ return false; }else{ return true; } } return true; } } // submit時のチェック var submitCheck = new Object(); submitCheck.onSubmit = function(me){ if (mailCheck.onChange()) return true; else return false; } submitCheck.onInvalid = function(){ alert("入力項目に不備があります。お手数ですが再度内容をご確認ください。 "); location='#formtop'; } //onchange時の追加ロジックをspryWidgetに登録 appendValidator(emailReinput , mailCheck); // submit時の追加チェックをSpry.Widget.Formに追加 appendValidator(Spry.Widget.Form , submitCheck); /* server side validation */ //ここをコメントアウトすると、名前文字数のエラーが表示されます。 //PHPなどのサーバサイドのエラー処理から、この部分を制御するとサーバエラーを同じ表示方法で表示することができます。 //setErrorMessage('txtName' , 'MaxChars'); /* server side update check */ /* * utility */ // DOMのノードを選択する関数。jQueryやprototype.jsを読み込む場合は、同じ目的の関数が用意されているので、この関数を削除してください。 function $(element){ return document.getElementById(element); } // spryWidgetに、追加したチェックを登録しています(appendLogicは、本サンプルにてspryWidget側に追加している機能です) function appendValidator(spryObj , appendLogic){ spryObj.appendLogic = appendLogic; } // エラーメッセージを表示する関数 function setErrorMessage(eleName , errCode){ var spryId; var errClass; if (eleName.match(/^txt/)){ spryId = eleName.replace(/^txt/, "spry"); if (errCode == "invalid format"){ errClass = "textfieldInvalidFormatState"; }else{ errClass = "textfield" + errCode + "State"; } }else if(eleName.match(/^chk/)){ spryId = eleName.replace(/^chk/, "spry"); errClass = "checkbox" + errCode + "State"; }else if(eleName.match(/^sel/)){ spryId = eleName.replace(/^sel/, "spry"); if (errCode == "not included in valid list"){ //選択肢にない。 errClass = "selectInvalidState"; }else if (errCode == "must be numeric"){ //数値ではない。 errClass = "selectInvalidState"; }else{ errClass = "select" + errCode + "State"; } } }