简体   繁体   English

单击按钮无法将值传递给函数

[英]Unable to pass values to a function on click of a button

I am a beginner in javascript and was just trying to implement a simple form.我是 javascript 的初学者,只是想实现一个简单的表单。 However, I am unable to submit it since the values that are entered in the textbox are not getting passed further to the function that I call on clicking the submit button.但是,我无法提交它,因为在文本框中输入的值没有进一步传递给我单击提交按钮时调用的函数。

I have seen similar questions and even followed the answers still for some reason I only get undefined instead of the data passed.我见过类似的问题,甚至出于某种原因仍然遵循答案,我只得到未定义而不是传递的数据。

Below is the code:下面是代码:

Html:网址:

<form >
    First Name:
    <input 
        type="text" 
        id="txtfirstName" 
    />

    Second Name:
    <input 
        type="text" 
        id="txtsecondName" 
    />

    User Name:
    <input 
        type="text" 
        id="txtuserName"
    />

    Email:
    <input 
        type="text" 
        id="txtemail"
    />

    Password:
    <input 
        type="password" 
        id="txtpassword" 
    />

    <input 
        type="button" 
        id= "btnsubmit" 
        value="SUBMIT" 
        onclick="submit("name","surname","user","mail","word")" 
    />
</form>

<script>
var fname = "";
var sname = "";
var uname = "";
var email = "";
var password = "";
var submitButton = document.getElementById("btnsubmit");

submitButton.onclick = function submit(fname,sname,uname,email,password) {
    confirm("Are you sure you want to submit the form?"); 

    if(confirm) {
        alert("Below is the data entered by you:" + "\n" + fname + "\n" + sname + "\n" + uname + "\n" 
         + email + "\n" + password ) 
    } 
}
</script>

The function called at the onclick attribute for the input does not exist and it will never work.在输入的 onclick 属性处调用的函数不存在,它永远不会工作。

What you did was almost correct.你所做的几乎是正确的。 You added the click event for the submit button that calls a function.您为调用函数的提交按钮添加了单击事件。 That function will always (i think so) have one parameter (Event type) and not those added by you.该函数将始终(我认为如此)有一个参数(事件类型),而不是您添加的参数。

In order to retrieve the values for the inputs, you need to retrieve them in that function.为了检索输入的值,您需要在该函数中检索它们。

Check the snippet below.检查下面的片段。

 var submitButton = document.getElementById("btnsubmit"); submitButton.onclick = function submit() { confirm("Are you sure you want to submit the form?"); if(confirm) { var fname = document.getElementById('txtfirstName').value; var sname = document.getElementById('txtsecondName').value; var uname = document.getElementById('txtuserName').value; var email = document.getElementById('txtemail').value; var password = document.getElementById('txtpassword').value; alert("Below is the data entered by you:" + "\\n" + fname + "\\n" + sname + "\\n" + uname + "\\n" + email + "\\n" + password ) } }
 <form > First Name: <input type="text" id="txtfirstName" /> Second Name: <input type="text" id="txtsecondName" /> User Name: <input type="text" id="txtuserName" /> Email: <input type="text" id="txtemail" /> Password: <input type="password" id="txtpassword" /> <input type="button" id= "btnsubmit" value="SUBMIT" /> </form>

Here I fixed that:我在这里解决了这个问题:

<form >
    First Name:
    <input 
        type="text" 
        id="txtfirstName" 
    />

    Second Name:
    <input 
        type="text" 
        id="txtsecondName" 
    />

    User Name:
    <input 
        type="text" 
        id="txtuserName"
    />

    Email:
    <input 
        type="text" 
        id="txtemail"
    />

    Password:
    <input 
        type="password" 
        id="txtpassword" 
    />

    <input 
        type="button" 
        id= "btnsubmit" 
        value="SUBMIT" 
    />
</form>

<script>
var submitButton = document.getElementById("btnsubmit");

submitButton.onclick = function () {
    var fname = document.getElementById("txtfirstname").value;
    var sname = document.getElementById("txtsecondname").value;
    var uname = document.getElementById("txtusername").value;
    var email = document.getElementById("txtemail").value;
    var password = document.getElementById("password").value;

    confirm("Are you sure you want to submit the form?"); 

    if(confirm) {
        alert("Below is the data entered by you:" + "\n" + fname + "\n" + sname + "\n" + uname + "\n" 
         + email + "\n" + password ) 
    } 
}
</script>

Here is a fiddle working:这是一个小提琴工作:

https://jsfiddle.net/Lk9t0bxj/ https://jsfiddle.net/Lk9t0bxj/

<form>
    First Name:
    <input 
        type="text" 
        id="txtfirstName" 
    />

    Second Name:1
    <input 
        type="text" 
        id="txtsecondName" 
    />

    User Name:
    <input 
        type="text" 
        id="txtuserName"
    />

    Email:
    <input 
        type="text" 
        id="txtemail"
    />

    Password:
    <input 
        type="password" 
        id="txtpassword" 
    />

    <input 
        type="button" 
        id= "btnsubmit" 
        value="SUBMIT" 
        onclick="submit()" 
    />
</form>

Javascript: Javascript:

var fname = "";
var sname = "";
var uname = "";
var email = "";
var password = "";
var submitButton = document.getElementById("btnsubmit");

submitButton.onclick = function submit() {
    confirm("Are you sure you want to submit the form?"); 

    if(confirm) {
            fname = document.getElementById('txtfirstName').value;
            sname = document.getElementById('txtsecondName').value;
            uname = document.getElementById('txtuserName').value;
            email = document.getElementById('txtemail').value;
            password = document.getElementById('txtpassword').value;

        alert("Below is the data entered by you:" + "\n" + fname + "\n" + sname + "\n" + uname + "\n" 
         + email + "\n" + password ) 
    } 
}

There were some errors: Confusion with quotation marks:有一些错误: 与引号混淆:

onclick="submit("name","surname","user","mail","word")"

There is no need to pass the name fields:无需传递名称字段:

onclick="submit()"

You should get the field values and put it in the variables defined:您应该获取字段值并将其放入定义的变量中:

fname = document.getElementById('txtfirstName').value;

Another way of doing this is by adding onsubmit callback to your <form> element, and changing your <input> type to submit .另一种方法是将onsubmit回调添加到您的<form>元素,并将您的<input>类型更改为submit You don't have to add in individual ids for all of your input, instead you can use event.target[INPUT_NAME] to get your input element, and get the value of that element with INPUT.value .您不必为所有输入添加单独的 id,而是可以使用event.target[INPUT_NAME]来获取输入元素,并使用INPUT.value获取该元素的值。

Working sample code :工作示例代码:

 const handleOnSubmit = event => { event.preventDefault(); const { fname, sname, uname, email, password } = event.target; confirm("Are you sure you want to submit the form?"); if (confirm) { alert( "Below is the data entered by you:" + "\\n" + fname.value + "\\n" + sname.value + "\\n" + uname.value + "\\n" + email.value + "\\n" + password.value ); } };
 <form onsubmit="handleOnSubmit(event)"> First Name: <input type="text" name="fname" /> Second Name: <input type="text" name="sname" /> User Name: <input type="text" name="uname" /> Email: <input type="text" name="email" /> Password: <input type="password" name="password" /> <input type="submit" /> </form>

Other way to do this is use add.event.listener and template literals .其他方法是使用add.event.listenertemplate literals

var submitButton = document.getElementById("btnsubmit");


submitButton.addEventListener("click", function(e){
  e.preventDefault()
  var fname = document.getElementById("txtfirstName").value;
  var sname = document.getElementById("txtsecondName").value;
  var uname = document.getElementById("txtuserName").value;
  var email = document.getElementById("txtemail").value;
  var password = document.getElementById("txtpassword").value;

  confirm("Are you sure you want to submit the form?"); 

  if(confirm) {
      alert(`Below is the data entered by you: \n ${fname} \n ${sname} \n ${uname} \n ${email} \n ${password}`) 
  } 

})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM