2017-03-29 5 views
0

フォーム送信時に選択値がリセットされないようにするにはどうすればよいですか?ビューで

<select id="gender" ng-model="gender"> 
    <option value=''>Gender?</option> 
    <option value="female" >Female</option> 
    <option value="male" >Male</option> 
    <option value="other" >Other</option> 
</select> 
<input type="hidden" name="gender" value="{{gender}}"> 

で不完全なフォームを提出するには

var theValue = "<?php echo set_value('gender');?>"; 
var e = document.getElementById("gender"); 
e.value = theValue; 

、送信された値が選択値としてretrivedと入れて、エラーを提出し、選択がポスト値を保持する必要があり、一時的にはやりますが、もう一度リセットします。選択をリセットして値を保持しないようにするにはどうすればよいですか?

+1

使用PHPのマジックメソッド。それは特にそれのために設計されています。答えのサンプルコードを共有する。 –

答えて

0

まず、常にあなたのNG-モデルディレクティブでオブジェクトを使用しよう、のようなもの:

ng-model="form.gender" 

これは、ここで最もよく説明されています。 If you are not using a .(dot) in your AngularJS models you are doing it wrong?

応答では、form.gender属性を設定し、AngularJSの双方向バインディングが残りの部分を処理します。

PHPから値を取得し、同様にあなたのAngularJSコントローラ上でそれらを使用するng-initディレクティブを使用してみてください:あなたのAngularJSコントローラ内部の

ng-init="initGender('<?php echo set_value('gender'); ?>')" 

、その後:

$scope.form = {}; 
$scope.initGender = function(gender) { 
    $scope.form.gender = gender; 
}; 
+1

これはうまくいきました。 initでは、関数を呼び出す代わりに、 "gender = <?php echo set_value( 'gender');?>" ありがとう。 –

0

、これを試してみてください、このPHP関数を作成し、

function __selectedDb($ctrlValue,$dbValue) 
{ 
    if($ctrlValue == $dbValue) 
     return "selected='selected'"; 
    else 
     return ""; 
} 

と、次のように使用し、

<select class="custom-select" id="selImgTiling" name="selImgTiling" value="<?php echo $arrBgSettings['bg_image_tiling']?>"> 
           <option value="no-repeat" <?php echo __selectedDb('no-repeat',$arrBgSettings['bg_image_tiling'])?>>Tiling Off</option> 
           <option value="repeat"  <?php echo __selectedDb('repeat',$arrBgSettings['bg_image_tiling'])?>> Repeat</option> 
           <option value="repeat-x" <?php echo __selectedDb('repeat-x',$arrBgSettings['bg_image_tiling'])?>>Repeat Horizontal</option> 
           <option value="repeat-y" <?php echo __selectedDb('repeat-y',$arrBgSettings['bg_image_tiling'])?>>Repeat Vertical</option> 
          </select> 
+0

私は彼がAngularJSでPHPを使いたいと思うと思います。これは純粋なPHPです。 – Murilo