我有一个问题,当我完成表单上的一个字段并使用Tab键或鼠标移动到另一个字段时,表单会自动提交并转到actionCreate或actionEdit(视情况而定)中指定的页面。如果我重新打开表单,则该单个数据元素已保存,并且我可以再输入一个数据元素,但只要移动到另一个字段,表单就会自动重新提交。
一些背景资料:
这种行为已经持续了很长时间;我一直在努力解决这个问题。现在,我真的需要做点什么了。我试着在谷歌上搜索,看看是否有人发现了这个问题,但没有在网上找到任何可能的解决方案。
我有点不知所措,不知下一步该怎么办。考虑到表单非常标准,并且在Edge中也能正常工作,我认为这可能更像是Chrome/Firefox/localhost问题,而不是Yii问题,但我找不到任何关于行为的信息。
我非常感谢任何人提出的想法、想法,尤其是解决方案。
一个示例控制器(与此行为相关的许多控制器之一:
<?php
// This class was automatically generated by a giiant build task
// You should not change it manually as it will be overwritten on next build
namespace backend\controllers\base;
use common\models\PaletteColors;
use common\models\search\PaletteColorsSearch;
use yii\web\Controller;
use yii\web\HttpException;
use yii\helpers\Url;
use yii\filters\AccessControl;
use dmstr\bootstrap\Tabs;
/**
* PaletteColorsController implements the CRUD actions for PaletteColors model.
*/
class PaletteColorsController extends Controller
{
/**
* @var boolean whether to enable CSRF validation for the actions in this controller.
* CSRF validation is enabled only when both this property and [[Request::enableCsrfValidation]] are true.
*/
public $enableCsrfValidation = false;
/**
* Lists all PaletteColors models.
*
* @return mixed
*/
public function actionIndex()
{
$searchModel = new PaletteColorsSearch;
$dataProvider = $searchModel->search($_GET);
Tabs::clearLocalStorage();
Url::remember();
\Yii::$app->session['__crudReturnUrl'] = null;
return $this->render('index', [
'dataProvider' => $dataProvider,
'searchModel' => $searchModel,
]);
}
/**
* Displays a single PaletteColors model.
*
* @param integer $id
*
* @return mixed
*/
public function actionView($id)
{
\Yii::$app->session['__crudReturnUrl'] = Url::previous();
Url::remember();
Tabs::rememberActiveState();
return $this->render('view', [
'model' => $this->findModel($id),
]);
}
/**
* Creates a new PaletteColors model.
* If creation is successful, the browser will be redirected to the 'view' page.
*
* @return mixed
*/
public function actionCreate()
{
$model = new PaletteColors;
try {
if ($model->load($_POST) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} elseif (!\Yii::$app->request->isPost) {
$model->load($_GET);
}
} catch (\Exception $e) {
$msg = (isset($e->errorInfo[2])) ? $e->errorInfo[2] : $e->getMessage();
$model->addError('_exception', $msg);
}
return $this->render('create', ['model' => $model]);
}
/**
* Updates an existing PaletteColors model.
* If update is successful, the browser will be redirected to the 'view' page.
*
* @param integer $id
*
* @return mixed
*/
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load($_POST) && $model->save()) {
return $this->redirect(Url::previous());
} else {
return $this->render('update', [
'model' => $model,
]);
}
}
/**
* Deletes an existing PaletteColors model.
* If deletion is successful, the browser will be redirected to the 'index' page.
*
* @param integer $id
*
* @return mixed
*/
public function actionDelete($id)
{
try {
$this->findModel($id)->delete();
} catch (\Exception $e) {
$msg = (isset($e->errorInfo[2])) ? $e->errorInfo[2] : $e->getMessage();
\Yii::$app->getSession()->addFlash('error', $msg);
return $this->redirect(Url::previous());
}
// TODO: improve detection
$isPivot = strstr('$id', ',');
if ($isPivot == true) {
return $this->redirect(Url::previous());
} elseif (isset(\Yii::$app->session['__crudReturnUrl']) && \Yii::$app->session['__crudReturnUrl'] != '/') {
Url::remember(null);
$url = \Yii::$app->session['__crudReturnUrl'];
\Yii::$app->session['__crudReturnUrl'] = null;
return $this->redirect($url);
} else {
return $this->redirect(['index']);
}
}
/**
* Finds the PaletteColors model based on its primary key value.
* If the model is not found, a 404 HTTP exception will be thrown.
*
* @param integer $id
*
* @return PaletteColors the loaded model
* @throws HttpException if the model cannot be found
*/
protected function findModel($id)
{
if (($model = PaletteColors::findOne($id)) !== null) {
return $model;
} else {
throw new HttpException(404, 'The requested page does not exist.');
}
}
}
这张"表格"。与此控制器关联的php文件:
<?php
use kartik\helpers\Html;
use kartik\icons\Icon;
use kartik\tabs\TabsX;
use kartik\widgets\ActiveForm;
// Initialize framework as per <code>icon-framework</code> param in Yii config
Icon::map($this);
// Initialize a specific framework - e.g. Web Hosting Hub Glyphs
Icon::map($this, Icon::FA);
/**
* @var yii\web\View $this
* @var common\models\PaletteColors $model
* @var yii\widgets\ActiveForm $form
*/
?>
<div class="palette-colors-form">
<?php $form = ActiveForm::begin([
'id' => 'PaletteColors',
'type' => ActiveForm::TYPE_VERTICAL,
// 'enctype' => 'multipart/form-data',
'enableAjaxValidation' => true,
'fieldConfig' => [
'autoPlaceholder' => false,
'showErrors' => true,
],
]
);
?>
<div class="">
<?php $this->beginBlock('main'); ?>
<p>
<!-- attribute palette_id -->
<?= // generated by schmunk42\giiant\generators\crud\providers\core\RelationProvider::activeField
$form->field($model, 'palette_id')->dropDownList(
\yii\helpers\ArrayHelper::map(common\models\Palettes::find()->all(), 'id', 'name'),
[
'prompt' => 'Select',
'disabled' => (isset($relAttributes) && isset($relAttributes['palette_id'])),
]
); ?>
<!-- attribute palette_color_group_id -->
<?= // generated by schmunk42\giiant\generators\crud\providers\core\RelationProvider::activeField
$form->field($model, 'palette_color_group_id')->dropDownList(
\yii\helpers\ArrayHelper::map(common\models\PaletteColorGroups::find()->all(), 'id', 'name'),
[
'prompt' => 'Select',
'disabled' => (isset($relAttributes) && isset($relAttributes['palette_color_group_id'])),
]
); ?>
<!-- attribute rgba_red -->
<?= $form->field($model, 'rgba_red')->textInput() ?>
<!-- attribute rgba_green -->
<?= $form->field($model, 'rgba_green')->textInput() ?>
<!-- attribute rgba_blue -->
<?= $form->field($model, 'rgba_blue')->textInput() ?>
<!-- attribute hsla_hue -->
<?= $form->field($model, 'hsla_hue')->textInput() ?>
<!-- attribute hsla_saturation -->
<?= $form->field($model, 'hsla_saturation')->textInput() ?>
<!-- attribute hsla_luminosity -->
<?= $form->field($model, 'hsla_luminosity')->textInput() ?>
<!-- attribute name_common -->
<?= $form->field($model, 'name_common')->textInput(['maxlength' => true]) ?>
<!-- attribute rgba_alpha -->
<?= $form->field($model, 'rgba_alpha')->textInput() ?>
<!-- attribute hsla_alpha -->
<?= $form->field($model, 'hsla_alpha')->textInput() ?>
<!-- attribute cmyk_cyan -->
<?= $form->field($model, 'cmyk_cyan')->textInput() ?>
<!-- attribute cmyk_magenta -->
<?= $form->field($model, 'cmyk_magenta')->textInput() ?>
<!-- attribute cmyk_yellow -->
<?= $form->field($model, 'cmyk_yellow')->textInput() ?>
<!-- attribute cmyk_key -->
<?= $form->field($model, 'cmyk_key')->textInput() ?>
<!-- attribute radial_gradient -->
<?= $form->field($model, 'radial_gradient')->textarea(['rows' => 6]) ?>
<!-- attribute description -->
<?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
<!-- attribute comments -->
<?= $form->field($model, 'comments')->textarea(['rows' => 6]) ?>
<!-- attribute twb_variable -->
<?= $form->field($model, 'twb_variable')->textInput(['maxlength' => true]) ?>
<!-- attribute name_variant -->
<?= $form->field($model, 'name_variant')->textInput(['maxlength' => true]) ?>
<!-- attribute hex -->
<?= $form->field($model, 'hex')->textInput(['maxlength' => true]) ?>
<!-- attribute hex_web_safe -->
<?= $form->field($model, 'hex_web_safe')->textInput(['maxlength' => true]) ?>
<!-- attribute hex_inverted -->
<?= $form->field($model, 'hex_inverted')->textInput(['maxlength' => true]) ?>
<!-- attribute hex_complement -->
<?= $form->field($model, 'hex_complement')->textInput(['maxlength' => true]) ?>
</p>
<?php $this->endBlock(); ?>
<?=
TabsX::widget(
[
'encodeLabels' => false,
'items' => [
[
'label' => '<i class="fa fa-home"></i> Palette Colors',
'content' => $this->blocks['main'],
'active' => true,
],
],
'position' => TabsX::POS_ABOVE,
'encodeLabels' => false
]
);
?>
<hr/>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<div class="col-md-12 text-right">
<?= Html::submitButton(
'<span class="glyphicon glyphicon-check"></span> ' .
($model->isNewRecord ? 'Create' : 'Save'),
[
'id' => 'save-' . $model->formName(),
'class' => 'btn btn-success'
]
);
?>
</div>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
出于某种原因,它在activeForm中也对我起到了同样的作用,虽然我不知道确切的原因,但似乎有所帮助的是:
<?php $form = ActiveForm::begin([
'enableClientValidation' => false,
'enableAjaxValidation' => true,
]) ?>
到
<?php $form = ActiveForm::begin([
// 'enableClientValidation' => false,
// 'enableAjaxValidation' => true,
]) ?>
问题内容: 我有一个MySQL表和模型包含的字段,以及。我也有另一个表/模型也包含,和。 假设已经充满了桌子,和。 当我以表格形式输入数据时,当我选择与表格相关的“ 通过”下拉字段时,我希望相关和字段能够自动填写。 我的for 看起来像这样: 根据建议,在控制器中添加了以下内容: 问题答案: 您所需要的只是调用请求以获取必填字段。就像下面这样: (我不知道您的型号名称)查看您的表格,看看您的字段是
问题内容: 我想知道一种如何使用ajax或curl在外部站点(PHP)的多个页面上自动填充多个表单(使用)。 例如,一个站点有一个表单,可将您带到提交表单的时间,而还有另一种表单也需要填写和提交。我想从我的本地服务器自动填写两个表格。我该如何做到? 问题答案: 最简单的方法是使用油脂类(https://addons.mozilla.org/en- US/firefox/addon/greasemo
考虑到字段名称结构可能发生了变化,我尝试像第一次那样阅读format/fields。(代码如下)。但是,现在它告诉我没有要读取的字段()。 所以,我开始做一些搜索,并找到了参考另一种类型的PDF结构,他们可以切换到;XFA.老实说,我还没有找到任何令人满意的文档/示例,但我确实找到了一些代码,看起来应该可以在XFA PDF的结构中阅读。(代码如下)。我尝试了两种不同的方法。第一个基本说明XfaFi
jQuery:
其实我是用条形码扫描器来输入字段的。如果我有3个字段,那就是: 物料条码: 物料条码: 序列条码: 步骤: 1。在物料条形码文本字段 2中扫描物料条形码。扫描条形码“项目条形码”文本字段 3中的项目条形码。在串行条码文本字段中对串行条码进行扫描,扫描后自动提交。 那么问题来了,如果所有的字段都填好了,怎么自动提交呢? 谢谢你。
问题内容: 我正在尝试使用Python处理一些使用Adobe Acrobat Reader填写并签名的PDF表单。 我试过了: 该pdfminer演示:它没有任何倾倒在填写数据。 pyPdf:当我尝试使用PdfFileReader(f)加载文件时,它最大化了内核2分钟,而我只是放弃并杀死了它。 Jython和PDFBox:虽然可以很好地工作,但是启动时间却很长,如果这是我唯一的选择,我只会用纯Ja