嗨,我有一个html表单,我通过按钮上的点击事件提交.该事件触发$("#myform").submit(); 问题是表单上有一个复选框,在发布的params下面的firebug中显示"mycheckbox1 on"而不是预期的"mycheckbox1 true".
当通过ajax提交表单时,我可以设置发布的数据没有问题,但是这个表单有一个文件上传,需要其中一个黑客才能使它工作.我正在使用的那个最终称为提交.但也许那是不相关的.
在任何情况下,当数据到达服务器时,服务器不会将值"打开"视为bool,因此忽略它.
任何见解将不胜感激.
我遇到了一个相当愚蠢的问题.我正在创建我的第一个React应用程序,我遇到了一个小问题,在提交表单后我无法清除输入值.一个尝试谷歌搜索这个问题,在这里发现了一些类似的线程,但我无法解决这个问题.我不想更改组件/应用程序的状态,只是将输入值更改为空字符串.我尝试清除函数中的输入值onHandleSubmit(),但是我收到了一个错误:
"无法设置未定义的属性'值'".
我的SearchBar组件:
import React, { Component } from "react";
class SearchBar extends Component {
constructor(props) {
super(props);
this.state = {
city: ""
};
this.onHandleChange = this.onHandleChange.bind(this);
this.onHandleSubmit = this.onHandleSubmit.bind(this);
}
render() {
return (
<form>
<input
id="mainInput"
onChange={this.onHandleChange}
placeholder="Get current weather..."
value={this.state.city}
type="text"
/>
<button onClick={this.onHandleSubmit} type="submit">
Search!
</button>
</form>
);
}
onHandleChange(e) {
this.setState({
city: e.target.value
});
}
onHandleSubmit(e) {
e.preventDefault();
const city = this.state.city;
this.props.onSearchTermChange(city);
this.mainInput.value = "";
}
}
export default SearchBar;
Run Code Online (Sandbox Code Playgroud) 我在HTML页面上有一个表单,其中有多个提交按钮,可执行不同的操作.但是,当用户在文本输入中键入值并点击输入时,浏览器通常表现为按顺序激活下一个提交按钮.我想要一个特定的动作发生,所以我发现一个解决方案是在有问题的文本输入后直接将不可见的提交按钮放入HTML中,如下所示:
<input type="text" name="something" value="blah"/>
<input type=submit name="desired" value="Save Earth" style="display: none"/>
...
<input type=submit name="something_else" value="Destroy Earth" />
...
<input id="foobar" type=submit name="desired" value="Save Earth" />
Run Code Online (Sandbox Code Playgroud)
这在大多数浏览器中都很有魅力,除了它在Safari和Chrome等webkit浏览器中没有.出于某种原因,他们跳过了隐形提交按钮.我一直试图弄清楚如何拦截输入键按下并使用Javascript激活正确的提交,但我无法让它工作.拦截keydown并将注意力集中在正确的提交上是行不通的.
有没有办法使用Javascript或其他方式选择当用户点击HTML表单上的文本输入中的回车键时将使用哪个提交按钮?
编辑:为了澄清,表单不能要求Javascript从根本上"工作".如果在webkit浏览器上没有Javascript,我不在乎输入密钥提交是否是不可取的,但是我无法删除或更改提交按钮的顺序.
这是我尝试过的,它不会改变webkit浏览器中的提交行为.
有用的是将以下代码中的focus()更改为click().
document.onkeypress = processKey;
function processKey(e)
{
if (null == e)
e = window.event ;
if (e.keyCode == 13) {
document.getElementById("foobar").click(); // previously: focus()
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:最终解决方案:
适用于每个浏览器,只在需要时拦截输入密钥:
HTML:
<input type="text" name="something" value="blah"
onkeydown="return processKey(event)" />
<input type=submit name="desired" value="Save Earth" style="display: none"/>
...
<input …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的表单:
<form action="/vote/" method="post" class="vote_form">
<input type="hidden" name="question_id" value="10" />
<input type="image" src="vote_down.png" class="vote_down" name="submit" value="down" />
<input type="image" src="vote_up.png" class="vote_up" name="submit" value="up" />
</form>
Run Code Online (Sandbox Code Playgroud)
当我绑定到表单的submit($("vote_form").submit())时,我似乎无法访问用户单击的图像.所以我试图绑定到点击图像本身($(".vote_down, .vote_up").click()),它总是提交表单,无论我是否尝试
因为所有这些都是形式事件.
我应该将$ .post()附加到form.submit()事件,如果是这样,我如何判断用户点击了哪个输入,或者
我应该将$ .post()附加到图像点击,如果是这样,我该如何阻止表单提交.
这是我的jQuery代码现在的样子:
$(".vote_up, .vote_down").click(function (event) {
$form = $(this).parent("form");
$.post($form.attr("action"), $form.find("input").serialize() + {
'submit': $(this).attr("value")
}, function (data) {
// do something with data
});
return false; // <--- This doesn't prevent form from submitting; what does!?
});
Run Code Online (Sandbox Code Playgroud) 我有一个动态表单,可以使用iPad显示.
这个表单有几个单选按钮和一些文本字段和一个提交按钮.
在iPad中,虚拟键盘GO按钮应该与输入键一起使用,导致单击表单中的第一个提交按钮并发布表单.
为了避免在表单完成之前过多的非自愿发布,我们在表单的上方添加了一个额外的提交按钮,绝对位于可见区域之外,并且onclick ="return false;".这会劫持输入击键,防止在除Safari Mobile之外的每个浏览器中意外发布.
在iPad上,我们甚至测试了Opera mobile,它按预期工作.
但Safari Mobile显然忽略了返回false,因为单击按钮的事件会导致其他浏览器无法发布的帖子,甚至不会在PC上进行Safari.
我的问题是
1:为什么safari mobile会在提交时忽略"return false",这里还有其他机制吗?
2:如何在单击GO时阻止Safari移动设备发布表单?
我已经在谷歌和#2进行了大量的搜索,发现了很多例子,但都需要大量的JavaScript和事件绑定和形式与用户一起的动态特性产生的,因为几乎所有的需要结合事件的每一个内容,使这个容易出错,而且相当复杂文本框和文本区域.
任何有效的解决方案都是好的,但越简单越好,特别是如果它不需要对可能与自动完成或验证事件冲突的表单或事件进行太多自定义.
示例testpage:http://lab.dnet.nu/ipad.php
我有一个漂亮的小CSS图像,需要一个按钮.我尝试了大约20种不同的方法,但都没有.我只是得到一个空白的东西或一个内部没有任何东西的边框.
html:http://lrroberts0122.github.com/DWS/lab6/level-2/
图片:http://lrroberts0122.github.com/DWS/lab6/level-2/images/button.png
CSS:http://lrroberts0122.github.com/DWS/lab6/level-2/css/main.css
由于某些原因,我无法将其更改为"提交",因此我需要弄清楚如何使用CSS进行此操作.谢谢您的帮助!

我试图在https://stripe.com/docs/stripe-js/elements/quickstart之后使用Stripe.js
我做了html,css,javascript和那个url的样本一样.
但是,当我点击"提交付款"按钮时,它始终显示控制台错误而无法正常工作.
(index):1 Uncaught (in promise) Error: We could not retrieve data from the specified Element.
Please make sure the Element you are attempting to use is still mounted.
at new t ((index):1)
at e._handleMessage ((index):1)
at e._handleMessage ((index):1)
at (index):1
Run Code Online (Sandbox Code Playgroud)
请让我知道为什么会这样.
我正在写一个程序,但是我遇到了一个问题:当我刷新jsp页面时,系统会自动重新提交整个页面,我不知道如何避免它,有人可以帮助我吗?
让我们设想一个带有两个提交按钮的HTML表单.其中一个位于表格的上半部分,并做一些不那么重要的事情.另一个按钮是实际提交按钮,用于保存输入的数据.此按钮位于表单的末尾.这两个按钮将触发不同的动作网址.
有经验的用户喜欢通过按"输入"或"返回"而不是单击相应按钮来提交表单.
不幸的是,浏览器将查找当前表单的第一个提交按钮,并使用它来执行表单提交.因为在我的表单中第二个按钮是实际的提交按钮,我需要告诉浏览器使用这个特定按钮(或与之关联的action-url).
我没有链接javascript监听器,它正在寻找按键或类似的东西.所以我正在寻找一个更好的解决这个问题的方法.但是,欢迎javascript或jquery解决方案(没有keypressed-listerner).
非常感谢你的帮助.