Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery和DOM访问表单元素_Javascript_Jquery_Html_Dom - Fatal编程技术网

Javascript 使用jquery和DOM访问表单元素

Javascript 使用jquery和DOM访问表单元素,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,这是表格 <form method="post"> <input type="hidden" name="resulttype" value="Create"> <table> <tr> <td>Name</td> <td><input type="text" id="name

这是表格

<form method="post">

    <input type="hidden" name="resulttype" value="Create">              
    <table>
        <tr>
            <td>Name</td>           
            <td><input type="text" id="name" value="Abhishek"/></td>
        </tr>
        <tr>
            <td>User Name</td>
            <td><input type="text" id="username" name="username" value="AbhishekSimion"></td>
        </tr>
        <tr>
            <td>Email</td>
            <td><input type="text" id="email" name="email" value="a@a.com"></td>
        </tr>
        <tr>
            <td>Department</td>
            <td><input type="text" id="department" name="department"></td>
        </tr>
        <tr><td colspan="2"><input type="button" id="button" value="Done!"></td></tr>
    </table>
</form>
为什么我会在我的警报框中收到一条消息“name=null&email=undefined”?这里怎么了

注意:我使用的是jqueryv1.5.2

var x = document.getElementById("name");
var email = $("input#email").val();  

此外,本部分:

var x = $("#name");
var email = $("#email").val();  
var dataString = 'name='+ x + '&email=' + email;
需要在调用callme()函数之前执行以下操作:

var dataString;
$(function() {
$("#button").click(function() {
    var x = $("#name");
    var email = $("#email").val();  
    dataString = 'name='+ x + '&email=' + email;
    callme();
    });
  });
改变

此外,本部分:

var x = $("#name");
var email = $("#email").val();  
var dataString = 'name='+ x + '&email=' + email;
需要在调用callme()函数之前执行以下操作:

var dataString;
$(function() {
$("#button").click(function() {
    var x = $("#name");
    var email = $("#email").val();  
    dataString = 'name='+ x + '&email=' + email;
    callme();
    });
  });
试试这个

var myname = $('#name').val()
var mymail = $('#email').val();
你也可以像下面这样使用

数据:{name:myname,email:mymail}

var msg = $.ajax({
        type: "POST",      
        url: "/temp/AjaxPostSend",
        data: { name: myname, email: mymail }
        async: false,
        success: function(html){
          alert( "Data Saved: " + msg );
        }
     }).responseText;
更新

试一试

然后
var myname=$('#myname').val()

用于发送日期超过邮政使用

 data: $('#yourformID').serialize(),
试试这个

var myname = $('#name').val()
var mymail = $('#email').val();
你也可以像下面这样使用

数据:{name:myname,email:mymail}

var msg = $.ajax({
        type: "POST",      
        url: "/temp/AjaxPostSend",
        data: { name: myname, email: mymail }
        async: false,
        success: function(html){
          alert( "Data Saved: " + msg );
        }
     }).responseText;
更新

试一试

然后
var myname=$('#myname').val()

用于发送日期超过邮政使用

 data: $('#yourformID').serialize(),
因为

“x”中的值是一个对象而不是字符串,我认为“$(“input#email”)”的语法是错误的。请尝试
$(“:input[id='email']”).val()

因为

“x”中的值是一个对象而不是字符串,我认为“$(“input#email”)”的语法是错误的。请尝试
$(“:input[id='email']”).val()

至少
email
值应该有效

在任何情况下,都不要手动创建字符串。将
数据设置为包含以下值的对象:

data: {name: $('#name').val(), email: $('#email').val()},
// or
data: $('#yourformID').serialize(),
这样,jQuery将负责正确的转义

还要注意,ID必须是唯一的。如果在页面上方有其他具有相同ID的元素,它将无法工作。然后更改ID

更新:

您的代码流不正确。本部分:

var x = document.getElementById("name");
var email = $("input#email").val();  

var dataString = 'name='+ x + '&email=' + email;
将在页面完成加载之前执行。这意味着(a)元素还不可用,(b)即使元素可用,用户也无法输入任何信息

您必须在发送表单时读取值:

$(function() {
    $("#button").click(callme);

    function callme() {      
        $.ajax({
            type: "POST",
            url: "/temp/AjaxPostSend",
            data: {name: $('#name').val(), email: $('#email').val()},
            success: function(msg){
                alert( "Data Saved: " + msg );
            }
         });
    }

});
还要注意

var msg = $.ajax({...}).responseText;
将无法工作,因为Ajax请求是异步的。这意味着
callme()
将在Ajax响应可用之前返回。响应文本作为
success
回调的参数提供

更正:我看到了
async:false
,但我的大脑似乎有点错误;)在这种情况下,上述说法确实有效。但是您应该避免同步Ajax(应该称为Sjax)调用,因为它会阻塞客户端。

至少
email
值应该可以工作

在任何情况下,都不要手动创建字符串。将
数据设置为包含以下值的对象:

data: {name: $('#name').val(), email: $('#email').val()},
// or
data: $('#yourformID').serialize(),
这样,jQuery将负责正确的转义

还要注意,ID必须是唯一的。如果在页面上方有其他具有相同ID的元素,它将无法工作。然后更改ID

更新:

您的代码流不正确。本部分:

var x = document.getElementById("name");
var email = $("input#email").val();  

var dataString = 'name='+ x + '&email=' + email;
将在页面完成加载之前执行。这意味着(a)元素还不可用,(b)即使元素可用,用户也无法输入任何信息

您必须在发送表单时读取值:

$(function() {
    $("#button").click(callme);

    function callme() {      
        $.ajax({
            type: "POST",
            url: "/temp/AjaxPostSend",
            data: {name: $('#name').val(), email: $('#email').val()},
            success: function(msg){
                alert( "Data Saved: " + msg );
            }
         });
    }

});
还要注意

var msg = $.ajax({...}).responseText;
将无法工作,因为Ajax请求是异步的。这意味着
callme()
将在Ajax响应可用之前返回。响应文本作为
success
回调的参数提供


更正:我看到了
async:false
,但我的大脑似乎有点错误;)在这种情况下,上述说法确实有效。但是您应该避免同步Ajax(应称为Sjax)调用,因为它会阻止客户端。

不确定为什么电子邮件会给您未定义的值,但对于名称,它应该如下所示:

var x = document.getElementById("name").value;


不确定为什么电子邮件会给您未定义的值,但对于名称,它应该如下所示:

var x = document.getElementById("name").value;


要使用纯JavaScript获取输入值,必须访问名为
value
的变量

var x = document.getElementById("name").value;
您的第二个变量应该按预期工作,但是可以忽略选择器的输入,因为ID总是唯一的,并且可以为您节省一些字节

var email = $("#email").val();
另外,还有一种更简单的方法可以使用ajax发送表单。序列化表单。注意
数据:…

var msg = $.ajax({
        type: "POST",
        url: "/temp/AjaxPostSend",
        data: $("form").serialize(),
        async: false,
        success: function(html){
          alert( "Data Saved: " + msg );
        }
     }).responseText;

要使用纯JavaScript获取输入值,必须访问名为
value
的变量

var x = document.getElementById("name").value;
您的第二个变量应该按预期工作,但是可以忽略选择器的输入,因为ID总是唯一的,并且可以为您节省一些字节

var email = $("#email").val();
另外,还有一种更简单的方法可以使用ajax发送表单。序列化表单。注意
数据:…

var msg = $.ajax({
        type: "POST",
        url: "/temp/AjaxPostSend",
        data: $("form").serialize(),
        async: false,
        success: function(html){
          alert( "Data Saved: " + msg );
        }
     }).responseText;

可以序列化表单并使用ajax发送,而不是手动连接所有值。可以序列化表单并使用ajax发送,而不是手动连接所有值。我得到“name=[object object]&email=undefined”我得到“name=[object object]&email=undefined”我得到这个“name=undefined&email=undefined”在这里试试看,只有电子邮件是有效的,它在我的项目中也不起作用,也就是说,在我的机器上如果你第一次看到的消息当然是空的。问题是这个事件的绑定将在bowser调用整个页面之前执行。制作一个更简单的方法,只显示在事件文档中执行的警报。就绪。我还收到消息“name=[object object]&email=undefined”。我说的是,方法“getElemntsById()”返回的是一个对象,而不是字符串。你想要的是“x.value”。请看@Felix Kling的回复,这个问题有一个很好的答案。我得到这个“name=undefined&email=undefined”试试这里只有email起作用,它在我的项目中也不起作用,也就是说,在我的机器上如果你看到第一页的消息