Jquery 选择2小部件获取ID并更新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)中。这是我在MfwpController中的函数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
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。工作很好我会更新我的帖子愿真主保佑你的知识。。