- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:是否可以在设置为值的字符行的末尾包含某种类型的字符(如\r 或\n,或编码函数生成的某些字符)文本输入元素,以诱导表单提交该内容——就像在文本输入框中按下回车键可以导致表单提交一样?我遇到过一些非浏览器客户端,它们在粘贴包含回车符的复制文本时提交数据 - 所以我想知道这在 Javascript 中是否可能以某种方式实现?到目前为止,在此页面/脚本的环境中,我已尝试附加 \r
、\n
和 \r\n\r
没有成功 - 但我想知道某些特殊字符是否可行,或者我是否遗漏了什么。
背景:我正在开发一个 Firefox 扩展,它需要填写一个输入框,然后在框架集中提交一个表单。表单本身有自己的脚本定义的(即,不是扩展代码的一部分)onsubmit 函数。我读到执行 form.submit()
会阻止执行表单的 onsubmit 属性;并使用 onsubmit()
提交表单无法提供页面的正确功能,这向我表明它是需要执行的 onsubmit 代码中脚本定义的函数 - 这意味着只需填写通过 Javascript 框,然后使用 Javascript 提交表单将不起作用。我可以尝试通过触发页面上的事件以某种方式调用网站的功能,但这会造成一个麻烦的情况,我们正在解决一个变通的解决方案(这在 Javascript 中并不少见)——但事情会更多如果可以简单地将返回类型字符附加到要插入到输入元素的值属性中的字符串的末尾,那就太优雅了。
进度:John、Jon 和 Frog,感谢你们在这里做出的贡献。看起来我需要对 keydown 或 keyup 事件进行 create-init-dispatch。随着进一步的进展,我会进一步通知;新见解仍然非常受欢迎 - 特别是在类别中:“这是否可能真正起作用并导致提交表单?”
我尝试摆弄扩展本身,但遇到了一些问题。为了总体上测试键盘事件的调度,我创建了一个简单的 HTML 测试文档——但是,这里似乎出了点问题。单击按钮时,我确实收到“已发送”警报,但当 myKeyCode 为 65(“A”的值)时,没有任何内容添加到输入框中。当值为 13(或 RETURN)时,它也不会提交。也许有人可以在此代码中发现错误。代码可在 http://jsbin.com/orudu4/1/edit 进行测试和编辑
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Tester for Extension</title>
<script type="text/javascript">
var myKeyCode = 65; // should be "A"
// var myKeyCode = 13; // should be RETURN
function fireIt(){
var el = document.getElementById("inputId");
el.focus();
var e = document.createEvent('KeyboardEvent');
e.initKeyEvent('keydown', true, true, window, false, false, false, false, myKeyCode, 0);
el.dispatchEvent(e);
alert("dispatched");
}
</script>
</head>
<body>
<form action="nowhere.html" onsubmit="alert('submited');">
<input type="button" value="button" onclick="fireIt()" />
<input type="text" id="inputId" value="value" />
</form>
</body>
</html>
注意:
我从一些评论者(他们仍然提供了很好的答案)那里看到,有些人在阅读上述内容时假设我让用户按下了一个键。事实并非如此。此处触发必要操作的事件是:1) 用户单击工具栏上的按钮,以及 2) html 中的更改
最佳答案
编辑:没看到你只需要 javascript。
也许您可以 POST 到表单 URL?
如果模拟回车键的按键呢?
function simulateKeyPress(character) {
jQuery.event.trigger({ type : 'keypress', which : character.charCodeAt(0) });
}
$(function() {
$('body').keypress(function(e) {
alert(e.which);
});
simulateKeyPress("e");
});
取自HERE
关于javascript - 是否可以通过编程方式在文本输入框中使用返回字符来触发表单提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5422290/
我是一名优秀的程序员,十分优秀!