對於Yii中radioButtonList控件validateOnSubmit時出錯的不完美解決方案

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();獲取不到準確的值。

求完美解決方案。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章