0

我目前面临模型“场景”属性的问题。问题是,我有一个单选按钮列表,其中包含两个项目“文本”和“数字”。在此单选按钮列表下方,我定义了三个关键字文本字段。现在我正在使用 JQuery 隐藏/显示那些关键字文本字段(当用户在单选按钮列表中选择“数字”项时,这些关键字文本字段被隐藏。)我现在要做的是添加服务器端验证“答案”文本字段。如果用户在单选按钮列表中选择了“数字”项,则答案必须是数字。

我目前的计划是在 JQuery 部分中指定模型的场景属性,如下所示:

<script type="text/javascript">
    $(document).ready(function(){ 
        $("#Task_0_answer_type_0").click(function () {
            if ($(this).is(":checked")){
                $(".keyword").show();
                <?php $task->scenario = ''?>
            }
        });
        $("#Task_0_answer_type_1").click(function () {
            if ($(this).is(":checked")){
                $(".keyword").hide();
                <?php $task->scenario = 'number'?>
            }
        });
    });
</script>

然后我通过添加以下语句更改了模型中的 rules():

array('answer', 'numerical', 'on'=> 'number'),

但是,它根本不起作用?请帮帮我。

先感谢您。

4

1 回答 1

2

我现在要做的是在“答案”文本字段上添加服务器端验证。如果用户在单选按钮列表中选择了“数字”项,则答案必须是数字。

您完全错误地混合了客户端脚本和服务器语言,您必须从上面的脚本中删除部分 php 代码,因为它们没有任何意义。

<select name="Task[options]">
         <option value="-1">Select One</option>
         <option value="1">Answer Type Text</option>
         <option value="2">Answer Type Number</option>
</select>

当您发布表单时,在您的操作中,只需在此处进行切换,然后再执行验证

if($_POST['Task']['options'] == '2'){
   $taskModel->setScenario('number');
}
于 2013-08-20T08:03:37.740 回答