2016-06-28 117 views
0

我不想提交表單,但我想要獲取輸入字段的值並通過ajax將其發送到控制器以便保存在數據庫中。 我有這樣的下面JS代碼,以幫助我得到的輸入域的內容和之後在我的控制器的用戶輸入如何使用ajax保存數據yii2

<?php 
$script = <<< JS 
$(document).ready(function(){ 
    //setup before functions 
    var typingTimer; 
    var doneTypingInterval = 3000; 
    var \$TitleInput = $('#product-product_title'); 

    //on keyup, start the countdown 

    \$TitleInput.on('keyup input change paste',function(){ 
     clearTimeout(typingTimer); 
     if (\$TitleInput.val()) { 
      typingTimer = setTimeout(doneTyping, doneTypingInterval); 
     } 
    }); 
    //user is "finished typing," do something 
    function doneTyping() { 

     data = \$TitleInput.val(); 

     $.ajax({ 
      url: '/trobay/draft/create', 
      type: 'POST', 
      data: data, 
      success: function (data) { 
       alert(data) 
      }, 
      error: function(jqXHR, errMsg) { 
       // handle error 
       alert(errMsg); 
      } 
     }); 
    } 
}); 
JS; 
$this->registerJs($script); 
?> 

3第二個發送到服務器端我有這個

public function actionCreate() 
{ 
    $model = new Draft(); 

    if ($model->load(Yii::$app->request->post())) { 
     $model->created_at = \time(); 
     if($model->save()){ 
      echo draftId; 
     }else{ 
      echo '0'; 
     } 

    } else { 
     return $this->render('create', [ 
      'model' => $model, 
     ]); 
    } 
} 

我要回顯,如果標題是草案draftid是保存成功 如何使這項工作plase這個

任何幫助下面是我的看法

<?php $form = ActiveForm::begin([ 
    'id' => $model->formName(), 
    'enableClientValidation' => true, 
    'fieldConfig' => ['template' => '{label}{input}{hint}'] 
]); ?> 
    <div class="row"> 
     <div class="col-md-12"> 
      <?= $form->field($model, 'product_title')->textInput([ 
       'class' => 'title-input', 
       'placeholder' => 'Give us a title for your items(include size,brand,color,material. e.t.c)', 
      ])->label(false) ?> 
     </div> 
     <div class="col-md-12 text-muted">E.g Men's blue addidas glide running shoes size 11 </div> 
    </div> 
    <?= $form->field($model, 'user_id')->textInput() ?> 

    <?= $form->field($model, 'product_name')->textInput(['maxlength' => true]) ?> 

    <?= $form->field($model, 'product_description')->textarea(['rows' => 6]) ?> 

    <?= $form->field($model, 'category_id')->textInput() ?> 

我有這個在我的觀點,但我想只保存第一個輸入字段的值後3秒用戶輸入的存在價值

+0

請,顯示您的視圖,表單 – Vitaly

+0

@Vitaly謝謝,我已經更新了我的問題,我已經加入我的看法 – sam

+0

我想添加值的每個用戶價值變動所以我沒有等待時間分貝用戶填寫了所有表格並提交 – sam

回答

0

試試這個JS,但你的ID形式改變$('#form')

$(document).ready(function(){ 
    //setup before functions 
    var typingTimer; 
    var doneTypingInterval = 3000; 
    var $form = $('#form'); 

    //on keyup, start the countdown 

    $form.find('input[type="text"]').on('keyup input change paste',function(){ 
     clearTimeout(typingTimer); 
     if ($(this).val()) { 
      typingTimer = setTimeout(doneTyping, doneTypingInterval); 
     } 
    }); 
    //user is "finished typing," do something 
    function doneTyping() { 
     $.ajax({ 
      url: '/trobay/draft/create', 
      type: 'POST', 
      data: $form.serialize(), 
      success: function (data) { 
       alert(data) 
      }, 
      error: function(jqXHR, errMsg) { 
       // handle error 
       alert(errMsg); 
      } 
     }); 
    } 
});