SRS: 5 つの電子メール フィールドで構成されるフォームを検証する必要があります。ルールは次のとおりです。プレースメントと注文に関係なく、これらのフィールドの少なくとも 1 つが有効な電子メールである必要があります。
これまでの私のコード:
$("#frm_referral_email").validate({
rules: {
referral_invitation_text: {required: true}
},
messages: {
referral_invitation_text: "Enter your message"
},
// the errorPlacement has to take the table layout into account
errorPlacement: function(error, element) {
if (error.html() != "")
error.appendTo( element.parent().next() );
},
// specifying a submitHandler prevents the default submit, good for the demo
submitHandler: function() {
// if(!("#frm_referral_email").valid())
// return false;
var valid = true;
$('.referral_email').each(function(){
if($(this).hasClass('error')){
valid = false;
return true;
}
});
if(!valid){
return false;
}
var coworker_invitation_text = $('#frm_referral_email #referral_invitation_text').val();
var coworker_invitation_text_ext = $('#frm_coworker_email #referral_invitation_text_ext').html();
var referral_email_coworker_sent = $('#coworker_email_sent').val();
var referral_email_not_sent = $('#coworker_email_not_sent').val();
var user_full_name = $('#user_full_name').val();
var from_email = $('#user_email').val();
var referral_email_arr = [];
var i = 0;
$('.referral_email').each(function()
{
var elem = $(this);
if (elem.val().indexOf("example") < 0 && elem.val() != ""){
coworker_email_arr.push(elem.val());
i++;
}
});
if (i ==0 ){
$("#frm_referral_msg").html(get_phrase("enter_emails"));
return;
}
var email_send = new email_generator(referral_email_arr,from_email, get_phrase("invite_subject") ,coworker_invitation_text, referral_email_invatation_text_ext,referral_email_sent,referral_email_not_sent);
email_send.send('frm_coworker_msg');
},
// set this class to error-labels to indicate valid fields
success: function(label) {
// set as text for IE
//label.html(" ").addClass("checked");
}
});
$(".coworker_email, .coworker_email.error").rules("add", {
// require_from_group: [1, '.referral_email'],
email:true,
required: {
depends: function(element){
var sumUp = 0;
$(".coworker_email").each(function(){
sumUp += $(this).val().length;
});
if(sumUp == 0)
return true;
else
return false;
}
},
messages: "Please enter at least one valid email"
});
HTML:
<div>
<span style='text-align:left;'><?=get_phrase("EmailAddresses")?>:</span>
<br/>
<input type='text' class='referral_email' placeholder='example@<?=$company_domain_name?>'/>
<br/>
<input type='text' class='referral_email' placeholder='example@<?=$company_domain_name?>'/>
<br/>
<input type='text' class='referral_email' placeholder='example@<?=$company_domain_name?>'/>
<br/>
<input type='text' class='referral_email' placeholder='example@<?=$company_domain_name?>'/>
</div>
<div class='error_msg'></div>
私の謙虚な意見では、私が達成しようとしていることは非常に単純であるため、複雑すぎます。そして、機能性を確認するために横向きに多くのことをしましたが、まだバグがあります。たとえば、最後のフィールドに間違った入力を入力して送信を2回押すと、エラーメッセージが消え、どちらが合理的かわかりません説明は、この動作を説明できます。