是否可以从文档中的输入字段执行简单的 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>