是否可以从文档中的输入字段执行简单的 javascript 语句?
Is it possible to execute simple javascript statments from an input field in a document?
在下面的示例中,我将函数 main
附加到输入字段。该函数包含使用可变消息发送警报的说明(无论用户在该字段中输入什么)。
<form>
<input type="text" onsubmit="main()" />
<input type="submit" />
</form>
<script>
function main (param) {
alert(param)
}
//main();
</script>
它不起作用,但我相信那是因为我犯了一些我无法识别的菜鸟错误。此代码的功能版本的结果是能够提交 "hello world"
并生成一个警告框,说明 'hello world'(不带引号)。
但是,除此之外,我希望能够将 main("hello world");
或 alert('hello world');
之类的内容传递到输入字段以产生相同的结果。
我认为我 运行 遇到的问题是每次提交时页面都会刷新。这里有一些类似的问题,人们建议使用 onsubmit="main(); return false;"
,但实际上这 not 似乎有效。
jQuery方式:
您创建事件侦听器,当用户单击 'submit' 时将触发该事件侦听器。
<form>
<input type="text" id="text"/>
<input type="submit" />
</form>
<script>
$( "form" ).submit(function( event ) {
event.preventDefault();
alert( $('#text').val() );
});
</script>
要防止页面重新加载 - 您应该使用 event.preventDefault();
纯JavaScript:
<form>
<input type="text" id="text"/>
<input type="submit" id="submit" />
</form>
<script>
var button = document.getElementById("submit");
var text = document.getElementById("text");
button.addEventListener("click",function(e){
alert(text.value);
},false);
</script>
尝试这样的事情
onchange="main()"
onmouseenter、onMouseOver、onmouseleave ...
<input type="text" onmouseenter="main()" />
看起来你想要eval()
输入的值。
谨慎使用,有安全影响...
从处理程序返回 false
会停止常规操作,因此您在提交后没有重定向:
<form onsubmit="main(); return false;">
<input id="eval-input" type="text" />
<input type="submit" />
</form>
<script>
function main () {
eval(document.getElementById('eval-input').value);
}
</script>
以下是检测表单提交的方法:
<form onsubmit="foo()">
<input type="text">
<input type="submit">
</form>
<script>
function foo(){
alert("function called");
}
</script>
不过,如果您想通过函数管理表单数据,我建议您这样做(首选):
<form id="myform">
<input type="text">
<input type="submit">
</form>
<script>
document.getElementById("myform").onsubmit=function(event){
alert("function called");
//manage form submission here, such as AJAX and validation
event.preventDefault(); //prevents a normal/double submission
return false; //also prevents normal/double a double submission
};
</script>
编辑:
使用eval()
将字符串执行为JavaScript。
如果我明白你想做什么,你可以这样调用函数,写params[0].value你可以访问输入值:
function main(params) {
//dosomething;
document.write(params[0].value);
}
<form onsubmit="main(this)">
<input type="text">
<input type="submit">
</form>
在下面的示例中,我将函数 main
附加到输入字段。该函数包含使用可变消息发送警报的说明(无论用户在该字段中输入什么)。
<form>
<input type="text" onsubmit="main()" />
<input type="submit" />
</form>
<script>
function main (param) {
alert(param)
}
//main();
</script>
它不起作用,但我相信那是因为我犯了一些我无法识别的菜鸟错误。此代码的功能版本的结果是能够提交 "hello world"
并生成一个警告框,说明 'hello world'(不带引号)。
但是,除此之外,我希望能够将 main("hello world");
或 alert('hello world');
之类的内容传递到输入字段以产生相同的结果。
我认为我 运行 遇到的问题是每次提交时页面都会刷新。这里有一些类似的问题,人们建议使用 onsubmit="main(); return false;"
,但实际上这 not 似乎有效。
jQuery方式:
您创建事件侦听器,当用户单击 'submit' 时将触发该事件侦听器。
<form>
<input type="text" id="text"/>
<input type="submit" />
</form>
<script>
$( "form" ).submit(function( event ) {
event.preventDefault();
alert( $('#text').val() );
});
</script>
要防止页面重新加载 - 您应该使用 event.preventDefault();
纯JavaScript:
<form>
<input type="text" id="text"/>
<input type="submit" id="submit" />
</form>
<script>
var button = document.getElementById("submit");
var text = document.getElementById("text");
button.addEventListener("click",function(e){
alert(text.value);
},false);
</script>
尝试这样的事情
onchange="main()"
onmouseenter、onMouseOver、onmouseleave ...
<input type="text" onmouseenter="main()" />
看起来你想要eval()
输入的值。
谨慎使用,有安全影响...
从处理程序返回 false
会停止常规操作,因此您在提交后没有重定向:
<form onsubmit="main(); return false;">
<input id="eval-input" type="text" />
<input type="submit" />
</form>
<script>
function main () {
eval(document.getElementById('eval-input').value);
}
</script>
以下是检测表单提交的方法:
<form onsubmit="foo()">
<input type="text">
<input type="submit">
</form>
<script>
function foo(){
alert("function called");
}
</script>
不过,如果您想通过函数管理表单数据,我建议您这样做(首选):
<form id="myform">
<input type="text">
<input type="submit">
</form>
<script>
document.getElementById("myform").onsubmit=function(event){
alert("function called");
//manage form submission here, such as AJAX and validation
event.preventDefault(); //prevents a normal/double submission
return false; //also prevents normal/double a double submission
};
</script>
编辑:
使用eval()
将字符串执行为JavaScript。
如果我明白你想做什么,你可以这样调用函数,写params[0].value你可以访问输入值:
function main(params) {
//dosomething;
document.write(params[0].value);
}
<form onsubmit="main(this)">
<input type="text">
<input type="submit">
</form>