Jquery 选择2小部件获取ID并更新Yii2中的其他输入文本

Jquery 选择2小部件获取ID并更新Yii2中的其他输入文本,jquery,yii2,Jquery,Yii2,创建表单选择2。选中后,更改同一sql表中的其他inputText 大家好,在yii2框架中需要您的建议。。 我有一个sql表名:mfwp.itcontainid,id_mfwp,npwp,nama_wp和alamat_wp 我使用select2小部件查找npwp,在用户选择npwp后,它会将id放入inputText名称:nama_wp(将从mfwp sql表检索nama_wp)和inputText:alamat_wp(将从mfwp sql表检索alamat_wp)中。这是我在MfwpCont

创建表单选择2。选中后,更改同一sql表中的其他inputText

大家好,在yii2框架中需要您的建议。。 我有一个sql表名:mfwp.itcontainid,id_mfwp,npwp,nama_wp和alamat_wp 我使用select2小部件查找npwp,在用户选择npwp后,它会将id放入inputText名称:nama_wp(将从mfwp sql表检索nama_wp)和inputText:alamat_wp(将从mfwp sql表检索alamat_wp)中。这是我在MfwpController中的函数

public function actionLists($id){

    $countPosts = MFwp::find()
    ->where(['id' => $id])
    ->count();

    $posts = Mfwp::find()
    ->where(['id' => $id])
    ->orderBy('id DESC')
    ->all();


    if($countPosts>0){
        foreach($posts as $post){
        echo "<option value='".$post->id."'>".$post->nama_wp."</option>";
        }
    }else{
        echo "<option>-</option>";
    }

}
控制器中的actionList函数如下所示

    public function actionLists($id)
{   


    $posts = Mfwp::find()
    ->where(['id' => $id])
    ->asArray()
    ->orderBy('id DESC')
    ->one();
    Yii::$app->response->format = 'json';
    return $posts;


}
在控制台浏览器中,在参数列表后显示一个错误:SyntaxError:missing)

如果我导航到: 在我修改了select2中的控制器和视图表单插件事件(浏览器中显示的一个表)之后,mfwp sql表中的所有字段都已检索到。在JSON或原始数据中

use yii\helpers\Html;
use yii\widgets\ActiveForm;
use kartik\widgets\DatePicker;
use \yii\helpers\ArrayHelper;
use \app\models\Mfwp;
use \app\models\Pejabat;
use kartik\widgets\Select2;
use yii\helpers\Json;
use yii\helpers\Url;
use yii\web\View;

<?= $idnpwp = ArrayHelper::map(Mfwp::find()->all(),"id", "npwp", "nama_wp");?>
<?= $form->field($model, 'npwp')->widget(Select2::classname(), [
    'language' => 'id',
    'data' => $idnpwp,
    'options' => ['placeholder' => 'Select a NPWP ...'],
    'pluginOptions' => [
    'allowClear' => true
    ],

    'pluginEvents' => [
        'Change'=>'
        $.post("'.Url::to(['mfwp/lists']).'&id="+$(this).val(),function(data){
        $("#target").html(data);
        });
        '
    ]

]);

?>

<?= $form->field($model, 'nama_wp')->textInput(['id' => 'target']) ?>
但该值仍不会以表单形式出现在inputText nama_wp中

谢谢你的建议

奥马尔先生更新的解决方案:

我把插件事件改成这样:

       'pluginEvents' => [
        'change'=>'function(data) { 
            var data_id = data.currentTarget.value;

            },$.post("'.Url::to(['mfwp/lists']).'&id="+val(data_id),function(data){
            $("#target").val(data.nama_wp);
            });',
      ]
        'pluginEvents' => [
        'change'=>'function(event){
            var data_id = event.currentTarget.value;
            $.post("'.Url::to(['mfwp/lists']).'?id="+data_id,function(data){
            $("input#namas").val(data.nama_wp);$("#alamats").val(data.alamat_wp)
            });
        }'
      ]
public function actionLists($id)
{   


    $posts = Mfwp::find()
    ->where(['id' => $id])
    ->asArray()
    ->orderBy('id DESC')
    ->one();
    Yii::$app->response->format = 'json';
    return $posts;


}
我将控制器中的函数更改为:

       'pluginEvents' => [
        'change'=>'function(data) { 
            var data_id = data.currentTarget.value;

            },$.post("'.Url::to(['mfwp/lists']).'&id="+val(data_id),function(data){
            $("#target").val(data.nama_wp);
            });',
      ]
        'pluginEvents' => [
        'change'=>'function(event){
            var data_id = event.currentTarget.value;
            $.post("'.Url::to(['mfwp/lists']).'?id="+data_id,function(data){
            $("input#namas").val(data.nama_wp);$("#alamats").val(data.alamat_wp)
            });
        }'
      ]
public function actionLists($id)
{   


    $posts = Mfwp::find()
    ->where(['id' => $id])
    ->asArray()
    ->orderBy('id DESC')
    ->one();
    Yii::$app->response->format = 'json';
    return $posts;


}

**很好,谢谢我的朋友**

事件的第一件事是
更改
,而不是
更改
,因此相应地更改它。 关于问题,你的问题就在这里

$.post("'.Url::to(['mfwp/lists']).'&id="+$(this).val(),function(data){
您将使用
&
而不是
附加查询字符串,这是您导航更改选项时,
id
不会传递到页面/操作的原因

换成

$.post("'.Url::to(['mfwp/lists']).'?id="+$(this).val(),function(data){
除了上面的建议,您的代码中还有几个错误,您应该修复它们。例如,第二部分,您说您更改了select2的事件,这也是不正确的

'pluginEvents' => [
        'change'=>'function(data) { 
            var data_id = data.currentTarget.value;

            },$.post("'.Url::to(['mfwp/lists']).'&id="+val(data_id),function(data){
            $("#target").val(data.nama_wp);
            });',
      ]
如果这些错误仅仅是因为手动添加到这里,那么您应该始终复制粘贴代码,而不是手动写入代码,这样才能发现实际原因

更新

我想您会发现代码中的错误,因为我已经提到它是不正确的。但是无论如何,您应该将上面的代码更改为以下代码才能正常工作

'pluginEvents' => [
    'change'=>'function(event){
        var data_id = event.currentTarget.value;
        $.post("'.Url::to(['mfwp/lists']).'?id="+data_id, function(data){
            $("#target").html(data);
        });
    }'
]

我们完全不清楚你在问什么,这与你之前的问题有关吗?请具体说明你在这里遇到了什么问题,以及关于
null
你什么时候得到
null
?更改下拉菜单的选项后,
npwp
?Yes omar..它与第一个问题相关..我希望当用户在select2字段中选择值时,下一个inputText将自动填充nama_wp..如果我将浏览器导航到该链接,我会得到null..在下一个inputText中显示nama_wp值的问题的null部分?我希望当用户选择select2字段中的值,然后下一个inputText将自动填充nama_wp。我真正的问题是当我刷新表单时,select2只是出现符号插件加载。当我使用控制台浏览器检查时,错误丢失)在参数列表之后。我意识到pluginevents select2中的jquery代码有问题,但我永远不知道在哪里我已经换了衣服。但错误仍然相同:参数列表后缺少)。我不是手工打字,我是从可视代码中复制的。@SuhariAdi我知道如果你不仔细阅读我在答案末尾所说的内容,它将无法工作,请参阅更新部分谢谢你,我的兄弟。。我已经找到了答案,只需复制您的代码并在function controller和插件事件中使用第二个modify。工作很好我会更新我的帖子愿真主保佑你的知识。。