我有一个ActiveForm
,我试图通过点击其中一个li
元素来提交它。尝试使用javascript,但我得到的是form is not defined
。
目的是通过$_GET
发送信件并在控制器中进行搜索,以查找数据库表中以所点击的字母开头的所有结果。
这是我的表格:
<?php $form = \yii\bootstrap\ActiveForm::begin([
'id' => 'charsForm',
'action' => '#',
'method' => 'get',
'options' => ['data-pjax' => true, 'onsubmit' => 'return pjaxFilterLetters();', 'id' => 'filter-group2'],
]) ?>
<div class="authors-filter">
<ul class="letters">
<?php foreach ($array_in_use as $char){
echo '<li onclick="form.submit()">' . $char . '</li>';
} ?>
</ul>
</div>
<?php \yii\bootstrap\ActiveForm::end(); ?>
$array_in_use
只是一个包含所有字母的数组。
还有一些jQuery:
$(function(){
var letters = $('.letter').find('li');
var form = $("#charsForm");
letters.on('click', function () {
$(this).addClass('selected');
});
});
我在这里声明变量form
,但猜猜这不是正确的方法。
我应该如何提交表格?
答案 0 :(得分:2)
将您的点击事件更改为:
var letters = $('.letters').find('li');
var form = $("#charsForm");
letters.on('click', function () {
$(this).addClass('selected');//this will disappear when the page is refreshed after the submit
form.submit();
});
删除onclick属性
答案 1 :(得分:1)
在类定义(字母&lt; - &gt;字母)中似乎是一个拼写错误:<ul class="letters">
&lt; - &gt; var letters = $('.letter').find('li');
更改
echo '<li onclick="form.submit()">' . $char . '</li>';
到
echo '<li>' . $char . '</li>';
然后在javascript中提交表单,点击li
元素。
$(function(){
var letters = $('.letters').find('li');
var form = $("#charsForm");
letters.on('click', function () {
$(this).addClass('selected');
form.submit();
});
});