Php 两个字段具有相同id时,jQuery远程验证不起作用
我有一个像这样的html表单Php 两个字段具有相同id时,jQuery远程验证不起作用,php,jquery,html,yii,Php,Jquery,Html,Yii,我有一个像这样的html表单 <span id="langBrowser"></span> <table> <tr> <td id="sign_up" class="heading"></td> <td style="text-align:right"> <span class="close_font"&
<span id="langBrowser"></span>
<table>
<tr>
<td id="sign_up" class="heading"></td>
<td style="text-align:right">
<span class="close_font"><b>Close</b></span> <?php
echo CHtml::image(Yii::app()->baseUrl.'/images/close_icon.png',"",array('id'=>'close_reg_icon','style'=>'title:Advertisement;margin-top:5px;')); ?
</td>
</tr>
<tr><td colspan="2" id="label1" class="sub_heading"></td></tr>
<tr><td colspan="2"><hr/></td></tr>
<tr>
<td style="display:none" class="success" colspan="2" align="center">You are successfully registered in MyLokal Network, Please check your email for activating your account.</td>
</tr>
<tr><td> </td></tr>
</table>
<div id="success_hide">
<table>
<tr>
<td id="first_name_label_register" style="text-align:right;width:30%" class="label"></td>
<td><?php echo $form->textField($model,'USR_FirstName',array('name'=>"first_name",'id'=>"first_name",'class' =>'inputtext')); ?></td>
</tr>
<tr>
<td id="last_name_label_register" style="text-align:right" class="label"></td>
<td><?php echo $form->textField($model,'USR_LastName',array('name'=>'last_name','id'=>"last_name",'class'=>'inputtext')); ?></td>
</tr>
<tr>
<td id="email_label_register" style="text-align:right" class="label"></td>
<td><?php echo $form->textField($model1,'UEM_Email',array('name'=>'register_email','id'=>"register_email",'class'=>'inputtext')); ?></td>
</tr>
<tr>
<td id="reenter_email_label_register" style="text-align:right" class="label"></td>
<td><?php echo $form->textField($model1,'repeat_email',array('name'=>'reenter_email','id'=>"reenter_email",'class'=>'inputtext')); ?></td>
</tr>
<tr>
<td id="new_password_label_register" style="text-align:right" class="label"></td>
<td><?php echo $form->passwordField($model,'USR_Password',array('name'=>'passwd','id'=>"passwd",'class'=>'inputtext')); ?></td>
</tr>
<tr>
<td id="date_of_birth_label_register" style="text-align:right" class="label"></td>
<td><?php $this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model'=>$model,
'attribute'=>'USR_Date_Of_Birth',
'options'=>array(
'dateFormat'=>'yy-mm-dd',
'changeMonth'=>true,
'changeYear'=>true,
'showAnim'=>'fold',
'yearRange'=> '1910:2020',
'maxDate'=>'new Date();'
),
'htmlOptions'=>array(
'id'=>'dob',
'name'=>'dob',
'class'=>'inputtext',
'readonly'=>true,
'style'=>'width:207px;',
'language'=>'de'
),
));?></td>
</tr>
<tr><td class="label"></td><td id="birth_label"></td>
</tr>
<tr><td class="label"></td>
</tr>
<tr><td class="label"></td><td id="terms_label">
</td>
</tr>
<tr><td> </td></tr>
<tr><td> <input type="hidden" name="pid" value="<?php echo $pid;?>" /></td>
<td><?php echo CHtml::Button('Cancel',array('name' => 'cancel_reg_button','id'=>'cancel_reg_button','style'=>'background: #ffffff;color:black')); ?> <?php echo CHtml::submitButton('Sign Up',array('id'=>'button','name' => 'button2','style'=>'background: #6495ED;color:white')); ?></td></tr>
</table>
</div>
关
尝试使用class属性而不是id感谢上帝
我终于找到了解决这个问题的办法
实际上,在validator add方法中,我添加了checkemails方法。。。此函数具有注册电子邮件的值
如果我将您的“电子邮件”字段的id更改为“重新输入电子邮件”,则没有id注册电子邮件。。。然后它返回真的
我将checkemails方法更改为
那么它工作得很好
谢谢..我向您推荐抱歉rohan我不知道如何问这些问题。。请让我知道在这个问题上我需要做什么改变。。。谢谢。您已经回答了自己的问题-jquery只接受唯一的ID,从技术上讲,有效的HTML ID也必须是唯一的。如果ID多次出现,则仅选择第一个实例。这不是一个大错误,更多的是一个疏忽或设计缺陷。即使我有两个字段的相同id。。jquery validate使用name属性right。。
jQuery.validator.addMethod("ageCheck", function(value, element) {
var now=new Date();
var selected_date_array = jQuery("#dob").val().split("-");
var selected_date = new Date(selected_date_array[0],selected_date_array[1]-1,selected_date_array[2]);
return selected_date < now;
}, "Selected date must be less than current date");
jQuery.validator.addMethod("checkemails", function(value, element) {
return value.toLowerCase()==jQuery("#register_email").val().toLowerCase();
}, "Please enter the same value as in the email field");
jQuery(document).ready(function(){
jQuery('#reenter_email').bind("cut copy paste",function(e) {
e.preventDefault();
});
jQuery('#mlusers-register-form').validate({
errorClass: "error",
errorElement: "div",
rules:{
reenter_email:{required: true, email: true,checkemails:true},
passwd:{required: true,minlength:6},
dob:{required: true,dateISO: true,ageCheck:true},
first_name:{required:true,firstname: true},
last_name:{required:true,lastname: true},
register_email:{required: true, email:true,remote:{url:'./index.php?r=user/unique_email_check',async: false}}
},
messages:{
first_name:{required:" First Name field cannot be blank"},
last_name:{required:" Last Name field cannot be blank"},
register_email:{required:" Email field cannot be blank",remote:"Email id already registered"},
reenter_email:{required:" Re-enter Email field cannot be blank"},
passwd:{required:" New Password field cannot be blank",minlength: "Min length is 6."},
dob:{required:" Date Of Birth field cannot be blank",dateISO: "Invalid date. Must be formatted yyyy-mm-dd"}
},
submitHandler: function(form) {
jQuery(form).ajaxSubmit({
url:"./index.php?r=mLUsers/sign_up",
type:"POST",
success: function(){
jQuery("#success_hide").hide();
jQuery(".success").show();
}
});
}
});
});
public function actionUnique_email_check(){
//echo "<pre>";print_r($_POST);exit;
//sleep(10);
$email=$_GET['register_email'];
$emails_array= UserEmails::model()->findAllByAttributes(array('UEM_Email'=>$email));
if(count($emails_array) > 0){
echo json_encode(false);
}
else{
echo json_encode(true);
}
}
jQuery.validator.addMethod("checkemails", function(value, element) {
return value.toLowerCase()==jQuery("input[name='register_email']").val().toLowerCase();
}, "Please enter the same value as in the email field");