0

現在、モデルの「シナリオ」プロパティの問題に直面しています。問題は、「テキスト」と「数値」の 2 つの項目を持つラジオ ボタン リストがあることです。このラジオ ボタン リストの下に、3 つのキーワード テキスト フィールドを定義しました。今、私は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 に答える