当在谷歌浏览器中查看时,我的一个页面中出现了这个错误/特征,所以我写了一个看起来像这样的测试页面
<body>
<form action="loginhandler.php">
<input type="text" id="name">
<input type="text" id="lastname">
<input type="button" value="Login">
</form>
</body>
Run Code Online (Sandbox Code Playgroud)
在这里你可以看到,输入类型不是提交类型.因此,如果你在IE,Firefox,Opera上按ENTER键,没有任何反应,这是预期的行为.但是如果你在chrome上按Enter键,无论输入类型是否提交,它都会提交.
我的问题,这是chrome的默认功能/错误还是我在这里做错了什么.?
我有一些表单,它在iframe中上传文件.我想保留它的提交,直到我检查它是否与ajax有效.我怎样才能做到这一点 ?我的代码暂停提交并返回验证结果(当前只是一个返回'result':'true'的虚函数)但是然后不执行'submit'操作.在获得响应200状态后显示响应数据需要~2秒是否正常?
这是我的HTML:
<div id="message" style="background:black; width:400px; height:80px; display:none; color:white;">
</div>
<h1>Submit</h1>
<form action="{{upload_url}}" target="upload_target" method="POST" id="file_upload_form" enctype="multipart/form-data">
{% render_upload_data upload_data %}
<table>{{ form }}</table>
<p>
<input type="hidden" maxlength="64" name="myfileid" value="{{ myfileid }}" >
</p>
<p>
<input type="submit" id="file_upload_submit" value="Submit" />
</p>
<iframe id="upload_target" name="upload_target" src="" style="width:0;height:0;border:0px solid #fff;"></iframe>
</form>
Run Code Online (Sandbox Code Playgroud)
JS:
$(function() {
$('#file_upload_submit').click(function(e){
e.preventDefault();
var fileUploadForm = document.getElementById('file_upload_form');
$.ajax({
type: "POST",
url: '/artifact/upload/check-form/',
data: 'foo=bar',
dataType: "json",
success: function(data){
if(data['result'] == "true"){
$("#message").show();
$("#message").fadeIn(400).html('<span>'+data["message"]+'</span>');
setTimeout(function(){
$("#message").fadeOut("slow", function () { …Run Code Online (Sandbox Code Playgroud) 我有一个表单+布局,如下所示:
<form ...>
<div id="editor">
[form html]
<input type="submit" value="Submit form" />
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
以下javascript:
$(function() {
var form = $('#editor').parents('form');
alert(form.length); // this alerts "1"
$(document).on('submit', 'form', function() {
alert('document form submit fired'); // this works as expected (alerts)
});
form.on('submit', function() {
alert('selected form submit fired'); // this is never alerted
});
});
Run Code Online (Sandbox Code Playgroud)
此表单不是通过ajax加载的.页面加载时,第一个对话框警告"1".但是,在提交表单时,只会触发一个警报 - 触发提交文档中所有表单的警报.
为什么会这样?
我试图弄清楚是否有一种相对简单的方法(我对JQuery不熟练)在表单提交后保持模态打开.(表格包含在模态中).
如果表单成功或有错误,我的PHP将显示它们,但是一旦按下提交按钮,模态就会关闭.
如果我重新加载表单,我可以看到相应的成功或错误消息,所以一切正常,但我希望最终用户看到该消息,然后单击以关闭该模式.
如果有帮助,我可以发布我的代码.
谢谢.
<?php
$success_message = "<h3 class='success'>Thank you, your message has been sent.</h3>";
$success = false; // we assume it and set to true if mail sent
$error = false;
// set and sanitize our form field values
$form = array(
'Name' => $sanitizer->text($input->post->name),
'Email' => $sanitizer->email($input->post->email),
'Phone number' => $sanitizer->text($input->post->phone),
'Type of client' => $sanitizer->text($input->post->client_type),
'Service client is after' => $sanitizer->text($input->post->service),
'Further information' => $sanitizer->textarea($input->post->information)
);
$required_fields = array(
'name' => $input->post->name,
'email' => $input->post->email
); …Run Code Online (Sandbox Code Playgroud) 我试图用表单将一些文件提交到我的数据库.表单具有隐藏iframe的目标.当它完成加载时,我想要显示一条消息.
$("form#formPost").submit();
customFunction();
Run Code Online (Sandbox Code Playgroud)
这个例子似乎没有在触发customFunction()之前完成提交,这对于我正在设计的内容非常糟糕.
有没有办法在完成发送数据时执行某些操作?我正在环顾stackoverflow,并且没有很多帖子直接关于此.我觉得我必须进入目标iframe并在准备就绪时在那里执行代码,等等.有没有办法让它按我的意愿去做?
我试过的选项:
$("form#formPost").submit(function(){ customFunction(); });
Run Code Online (Sandbox Code Playgroud) 我对其他开发者意见和关于发布数据的想法感兴趣:
原生HTML: <form action="" method="POST">
VS
jQuery:jquery.post()或者$.ajax()
目前,我出于不同的原因使用它们,而且就个人而言,我以各自的方式享受这两者.
在随机的场合,我注意到jQuery路线的细微差别,这就是为什么我在寻找意见.
我会尽力解释我在做什么.但基本上(在特定的表单页面上)我禁用<form>提交jQuery,并发布表单数据而不重新加载浏览器.
有时像这样:
simple_form.php
<form class="checkMyForm" id="myemailFORM">
<input name="email1" type="text" value="blah@blah.yo" />
<input name="email2" type="text" value="blah@blah.ma" />
<input type="submit" name="button" value="submit" />
</form>
<script language="javascript" type="text/javascript">
$(document).ready(function(){
$("form.checkMyForm").on('submit', function(){
// do some stuff here (validation, clean-ups, who knows what else....)
// stop if problems are detected:
return false;
// if good to go, use ajax(), for this page:
var formid = $(this).attr("id"); // #myemailFORM
var …Run Code Online (Sandbox Code Playgroud) 我在我的角度2应用程序中使用2.0.0-rc.6.在表单提交我收到此错误 - self.context.onSubmit不是一个函数
它也是在浏览器中附加表单值.
提交页面重新加载和网址变成这样.
HTTP://本地主机:3000 /寄存器的firstName = vcvvc&lastName的VCV =&的userName = CVV和密码= VCV&密码= VCV
代码是
形成
<form class="ui form" (ngSubmit)="onSubmit()" #registrationForm="ngForm">
----
----
<button type="submit" class="ui button"> Register</button>
</form>
Run Code Online (Sandbox Code Playgroud)
服务
import { Component } from '@angular/core';
import { User } from '../models/user';
import { RegisterService } from '../services/register.service';
@Component({
selector: 'side-panel',
templateUrl: 'app/components/register.component.html'
})
export class RegisterComponent {
newuser: User = new User();
theText: string;
constructor(private _registerService: RegisterService){
}
onsubmit(){
console.log('form submit clicked..');
this._registerService.sendUser(this.newuser).subscribe(
date =>{
this.newuser = …Run Code Online (Sandbox Code Playgroud) 请考虑以下形式:
<form action="/a" method="post">
<input name="x" type="text" onblur="myonblur(e)" />
<input name="y" type="text" />
<input name="submit" type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
当焦点位于名为"x"的元素并且用户按下提交按钮时,onblur事件将触发,但不提交表单.如果我在表单中有onblur事件,有没有办法让提交按钮按预期工作?
我使用jquery的.submit()来拦截用户的提交事件,但是我发现了一个问题.
当用户单击提交按钮时,表单正常提交,但如果用户故意多次快速单击,则会多次提交,这将导致数据库中的重复数据.
这种问题的解决方案是什么?
更新:嗯,我看到一些建议说禁用提交按钮.这应该可以防止多次提交表单,但问题是我的页面中的表单元素没有刷新,如果我禁用它,用户将无法再提交它,禁用15秒可能会有效,但是这是解决这个问题的正确方法吗?
我已经阻止了Enter(返回)键,实际上,它在Tab键中被转换了.因此,当在输入文本字段内按下时,它将充当Tab键.这很好,但我需要它在最后一个字段中按下时触发提交按钮,下面是Enter键变异的代码:
$('input').keydown(function(event) {
if(event.which == 13) {
event.preventDefault();
$(this).nextAll('input:first').focus();
}
});
Run Code Online (Sandbox Code Playgroud)
和形式码是一序列输入类型="文本"和一个按钮式="提交"在端[编辑]实际上代码是这其中,从拍摄的jquery:在特定部分输入到标签触发.但我不知道为什么今天昨天工作不起作用:
$(':text').keydown(function(e) {
if(e.keyCode == 13 && $(this).attr('type') != 'submit') {
e.preventDefault();
$(this).nextAll('input:first').focus();
}
});
Run Code Online (Sandbox Code Playgroud) form-submit ×10
jquery ×7
forms ×3
html ×2
javascript ×2
post ×2
ajax ×1
angular ×1
django ×1
enter ×1
events ×1
modal-dialog ×1
onblur ×1
onsubmit ×1
tabs ×1
validation ×1