从文本框中获取数据并传递到yii2中的控制器

从文本框中获取数据并传递到yii2中的控制器,yii2,Yii2,这和我的问题一样。 我想从3个字段中的用户处获取数据,并将其传递给控制器操作。 我正试图通过javascript实现这一点,但似乎没有调用javascript函数 当我点击按钮时,什么也没有发生。控制台中也没有错误 我附上下面3个字段的代码,按钮和javascript index2.php <?php use yii\helpers\Html; //use yii\grid\GridView; use kartik\grid\GridView; use kartik\export\Exp

这和我的问题一样。 我想从3个字段中的用户处获取数据,并将其传递给控制器操作。 我正试图通过javascript实现这一点,但似乎没有调用javascript函数

当我点击按钮时,什么也没有发生。控制台中也没有错误

我附上下面3个字段的代码,按钮和javascript

index2.php

<?php

use yii\helpers\Html;
//use yii\grid\GridView;
use kartik\grid\GridView;
use kartik\export\ExportMenu;
use frontend\modules\stock\models\Sellitem;
use dosamigos\datepicker\DatePicker;
use dosamigos\datepicker\DateRangePicker;
use kartik\form\ActiveForm;

/* @var $this yii\web\View */
/* @var $searchModel frontend\modules\stock\models\SellitemSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */

$this->title = 'Stock';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="sellitem-index">

    <h1><?= Html::encode($this->title) ?></h1>
    <?php // echo $this->render('_search', ['model' => $searchModel]); ?>

    <div class="row">
        <div class="form-group">
            <div class="col-xs-4 col-sm-4 col-lg-4">
                <label for="upc" class="control-label"><p class="text-info">Product Code&nbsp;<i class="icon-star"></i></p></label>
                <input type="text" class="form-control" id="upc" class="span3">
            </div>
            <div class="col-xs-4 col-sm-4 col-lg-4">
                <label for="upc" class="control-label"><p class="text-info">Start Date&nbsp;<i class="icon-star"></i></p></label>
                <?= DatePicker::widget([
                //'label' => 'Startdate',
                'name' => 'startdate',
                'id' => 'startdate',
                //'value' => '02-16-2012',
                'template' => '{addon}{input}',
                    'clientOptions' => [
                        'autoclose' => true,
                        'todayHighlight' => true,
                        'format' => 'yyyy-mm-dd'
                    ]
                ]);?>
            </div>
            <div class="col-xs-4 col-sm-4 col-lg-4">
                <label for="upc" class="control-label"><p class="text-info">End Date&nbsp;<i class="icon-star"></i></p></label>
                <?= DatePicker::widget([
                //'label' => 'Startdate',
                'name' => 'enddate',
                'id' => 'enddate',
                //'value' => '02-16-2012',
                'template' => '{addon}{input}',
                    'clientOptions' => [
                        'autoclose' => true,
                        'todayHighlight' => true,
                        'format' => 'yyyy-mm-dd'
                    ]
                ]);?>
            </div>
        </div>

    </div>
    <p>
        <div class="form-group pull-right">
            <button class="btn btn-primary" onclick="getValue()">Seach</button>           
        </div>
    </p>
</div>
<?php
/* start getting the itemid */
$this->registerJs('
function getValue()
    {
        var uPc = $(".upc").val();
        var startDate = $(".startdate").val();
        var endDate = $(".enddate").val();

        alert(uPc);

    }
');
/* end getting the itemid */
?>

产品代码

开始日期

结束日期

搜索


注册表js使用一些jQuery赋值,因此按钮调用似乎看不到函数
getValue
,但您可以使用jQuery来赋值onclick和代码

假设您的按钮有一个名为
yourButton
的id,您可以这样做

<div class="form-group pull-right">
    <button id="yourButton" class="btn btn-primary" >Seach</button>           
</div>

$this->registerJs (
      "$('#yourButton').on('click', function() { 
          var uPc = $('#upc').val();
          var startDate = $('#startdate').val();
          var endDate = $('#enddate').val();

          alert(uPc);
      });"
  );

搜索
$this->registerJs(
“$('#yourButton')。在('click',function(){
var uPc=$('#uPc').val();
var startDate=$('#startDate').val();
var endDate=$('#endDate').val();
警报(uPc);
});"
);

在javascript代码中有'.upc'.startdate'.enddate',这意味着您正在查找类upc,startdate-enddate。。。但在html中,没有与输入字段关联的此类。。如果您有id,那么您应该使用#udc#startdate在jQuery中搜索。。。因此,您可以使用ajax序列化数据并将其发送到Control action,如

    $('body').on('click','#btn_id',function(){
      var data = $('form#id').serialize();
      $.ajax({
          'type' : 'get/post',
           'dataType' : 'html/json',
           'url' : 'controller/action',
           'data' : {variable:data},
            success : function(data){
               console.log('Data Pass Successfully');
},
            error : function(){
              console.log('There is an Error....!!!');
}
});
});

您是否已在浏览器控制台中检查javascript错误?刚刚收到一个引用错误。我在问题中加了一句。我也加了一句。。我有一些建议,希望是有用的,由这个我得到一个输出。但上面写着“未定义”。你在警报中没有定义。。点击后?是的。我在警报中没有定义。。单击确定您使用的是错误的后,选择使用#udc而不是。udcPerfect。现在我明白了。谢谢。