如何在输入字段上按下输入时禁用表单提交

时间:2017-05-10 21:26:07

标签: javascript jquery html forms

更新:我正在通过Javascript构建表单,因此页面加载时表单不存在。

我有一个带id="input"的输入字段,只要按下enter键,表单就会被提交。所以我试着像这样处理它。

$("#input").keydown(function (e) {
    if (e.keyCode == 13) {
        alert("enter pressed");
        return false;
    }
});

然而,这不起作用,没有警报,表格仍然被发送。我该如何解决这个问题?

5 个答案:

答案 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,显示它可以工作。看看

&#13;
&#13;
n
&#13;
$('#input').keydown(function (e) {
  if (e.keyCode == 13) {
    alert('alert pressed');
    return false;
  }
});
&#13;
&#13;
&#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();
  }
});

https://jsfiddle.net/aya6ockv/

答案 4 :(得分:-1)

return false比e.preventdefault()更有效。请查看event.preventDefault() vs. return false

&#13;
&#13;
            {section name=record loop=$rrows}
                {foreach from=$rrows[record] item=entry key=name}

                    <option> {$entry} </option>
                 {/foreach}
            {/section}
&#13;
&#13;
&#13;