您的位置:首页 > 编程语言 > PHP开发

对于Yii中radioButtonList控件validateOnSubmit时出错的不完美解决方案

2013-04-18 12:41 344 查看
YII版本:1.1.8

在使用YII的CActiveForm时

clientOptions属性validateOnSubmit=true时

radioButtonList始终会提示当前字段不能为空

解决方法:

修改jquery.yiiactiveform.js 文件

找到$.fn.yiiactiveform.validate方法

原代码:

$.each(settings.attributes, function(){
var msg = [];
if (this.clientValidation != undefined && (settings.submitting || this.status == 2 || this.status == 3)) {
var value = $('#'+this.inputID, $form).val(); //原语句
this.clientValidation(value, msg, this);
if (msg.length) {
messages[this.id] = msg;
}
}
if (this.enableAjaxValidation && !msg.length && (settings.submitting || this.status == 2 || this.status == 3))
needAjaxValidation = true;
});






改为:

$.each(settings.attributes, function(){
var msg = [];
if (this.clientValidation != undefined && (settings.submitting || this.status == 2 || this.status == 3)) {
/* yii radioButtonList验证错误修复 by zhao.jingxian */
var type = $('input[name="'+this.name+'"]', $form).eq(1).attr('type');
if('radio' == type)
{
var value = $('input[name="'+this.name+'"]:checked', $form).val();
}else{
var value = $('#'+this.inputID, $form).val(); //原语句
}
/* end */
this.clientValidation(value, msg, this);
if (msg.length) {
messages[this.id] = msg;
}
}
if (this.enableAjaxValidation && !msg.length && (settings.submitting || this.status == 2 || this.status == 3))
needAjaxValidation = true;
});


错误原因:cactiveform在生成radioButtonList时,ID会根据当前的属性数量生成id_1,id_2...等,所以var value = $('#'+this.inputID, $form).val();获取不到准确的值。

求完美解决方案。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: