更新:我正在通过Javascript构建表单,因此页面加载时表单不存在。
我有一个带id="input"
的输入字段,只要按下enter
键,表单就会被提交。所以我试着像这样处理它。
$("#input").keydown(function (e) {
if (e.keyCode == 13) {
alert("enter pressed");
return false;
}
});
然而,这不起作用,没有警报,表格仍然被发送。我该如何解决这个问题?
答案 0 :(得分:1)
在输入中使用onkeypress属性,如下所示:
<input type="text" onkeypress="myFunction(event)">
<script>
function myFunction(event) {
var x = event.which || event.keyCode;
if(x == 13) {
alert("enter pressed");
return false;
}
}
</script>
答案 1 :(得分:0)
我会这样做并将'form'更改为#input。除非您想在此网站上停止此输入提交,否则这应该可以正常工作。
$("form").bind("keypress", function(e) {
if (e.keyCode == 13) {
return false;
}
});
答案 2 :(得分:0)
刚刚创建了一个JSFiddle,显示它可以工作。看看
n
&#13;
$('#input').keydown(function (e) {
if (e.keyCode == 13) {
alert('alert pressed');
return false;
}
});
&#13;
答案 3 :(得分:0)
使用 public function actionCreate()
{
$model = new QbQuestion();
if ($model->load(Yii::$app->request->post())) {
// if you have answer attribute in model class than load that attribute
// no need of this line $answer = $model->answer;
// no need of this line $model->$answer;
// you can do it manually as below
$model->answer=$_REQEST['QbQuestion']['answer'];
$model->save();
return $this->redirect(Url::to(['qb-question/index']));
} else {
return $this->renderAjax('create', [
'model' => $model,
]);
}
}
阻止表单提交。
preventDefault()
表单示例:
$("#input").keydown(function (e) {
if (e.keyCode == 13) {
alert("enter pressed");
e.preventDefault();
}
});
答案 4 :(得分:-1)
return false比e.preventdefault()更有效。请查看event.preventDefault() vs. return false
{section name=record loop=$rrows}
{foreach from=$rrows[record] item=entry key=name}
<option> {$entry} </option>
{/foreach}
{/section}
&#13;