Php Yii在更改时验证下拉列表
我正在尝试验证dropdownlist,因为dropdownlist的值发生了变化。我想检查所选作业状态的表中是否已经存在。 下面是我的代码:Php Yii在更改时验证下拉列表,php,javascript,variables,yii,Php,Javascript,Variables,Yii,我正在尝试验证dropdownlist,因为dropdownlist的值发生了变化。我想检查所选作业状态的表中是否已经存在。 下面是我的代码: <script> function validate_dropdown(id) { alert("Selected id = "+id); //var msg = <?php echo NotificationRules::model()->validate_job($_POST[
<script>
function validate_dropdown(id)
{
alert("Selected id = "+id);
//var msg = <?php echo NotificationRules::model()->validate_job($_POST['id']);?>
//alert("Message from model func = "+msg);
}
</script>
<?php
echo $form->dropDownList($model, 'job_status_id', $jobstatuslist ,
array('empty'=>'Please Select job status (required)', 'onchange'=>'js:validate_dropdown(this.value)')
);
?>
函数验证_下拉列表(id)
{
警报(“所选id=”+id);
//var msg=
//警报(“来自模型func的消息=“+msg”);
}
我试图将js变量id传递给php函数,并在已存在所选作业状态的条目时发回一条消息。我可以在js函数validate_dropdown()中获取所选值,但无法继续。任何人请帮助……检查下面的示例。在这里,我将在下拉列表中显示所有用户。我将用户id保留为选项值,username保留为选项标签 用户表:
id username
------------------
1 Heraman
2 Dileep
3 Rakesh
4 Kumar
<?php
$list=CHtml::listData(User::model()->findAll(), 'id', 'username');
echo CHtml::dropDownList('username', $models->username, $list, array('empty' => '---Select User---','onchange'=>'alert(this.value)'));
?>
id用户名
------------------
1赫拉曼
2迪利普
3拉凯什
4库马尔
在您的情况下,您可以使用
'onchange'=>'validate_dropdown(this.value)
//Your script
<script>
function validate_dropdown(id)
{
alert("Selected id = "+id);
}
</script>
'onchange'=>'validate\u下拉列表(this.value)
//你的剧本
函数验证_下拉列表(id)
{
警报(“所选id=”+id);
}
我通过调用AJAX解决了这个问题
最终工作代码:
视图中的下拉代码
<?php
echo $form->dropDownList($model, 'job_status_id', $jobstatuslist ,
array(//AJAX CALL.
'prompt' => 'Please Select job status (required)',
'value' => '0',
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('NotificationRules/notificationPresent/'),
'data' => array("job_id" => "js:this.value"),
'success'=> 'function(data) {
if(data == 1)
{
alert("Rule is already present for this status, Please update existing rule.");
}
}',
'error'=> 'function(){alert("AJAX call error..!!!!!!!!!!");}',
)//end of ajax array().
));
?>
谢谢你的回复,我也得到了,我也使用了同样的逻辑。但我想在数据库中检查是否有任何具有该状态的条目。i、 当下拉列表值更改时,我想检查更改的值是否已经存在于数据库表中。嗨,我正在尝试做的同样的事情,对于创建,它工作正常,但在更新时,它不会给我已经选择的值。如何做到这一点?
<?php
public function actionNotificationPresent()
{
if (Yii::app()->request->isAjaxRequest)
{
//pick off the parameter value
$job_id = Yii::app()->request->getParam( 'job_id' );
if($job_id != '')
{
//echo "Id is received is ".$job_id;
$rulesModel = NotificationRules::model()->findAllByAttributes(array('job_status_id'=>$job_id));
if(count($rulesModel))
echo 1;
else
echo 0;
}//end of if(job_id)
else
{
//echo "Id id not received";
echo 0;
}
}//end of if(AjaxRequest).
}//end of NotificationPresent().
?>