javascript - JQuery,函数看不到文本字段值

标签 javascript jquery

请不要评判我的 JS 技能,我完全是初学者。 =))

所以我有一个注册用户的功能,但我想制作“create_sample_user”按钮来用一些数据填充文本字段。这样人们就可以快速查看网站,而无需输入姓名、电子邮件等...

enter image description here

但问题是:当我自己输入用户名和所有其他字段时,注册按钮工作正常。但是当我用“create_sample_user”按钮填充文本字段时不起作用(我假设它只是“看不到”文本字段的值)。

function create_sample_user() {
    var button = $("#create-sample-user");
    button.click(function() {
        var ranNum = 1 + Math.floor(Math.random() * 100);
        var uname = 'Sample_'+ranNum;
        $("#id_username").val(uname);
        $("#id_email").val(uname+'@'+uname+'.com');
        $("#id_password").val(uname);
        $("#id_password2").val(uname);
    });
}

function register_user() {
    $("#register-user").click(function() {
        $.ajax({
            url: "/registration/register_user/",
            type: "POST",
            dataType: "text",
            data: {
                username : $("#id_username").val(),
                email : $("#id_email").val(),
                password : $("#id_password").val(),
                password2 : $("#id_password2").val(),
            },
            success: function(data) {
                parsed_data = $.parseJSON(data);
                if (data) {
                    alert("User was created");
                    window.location = parsed_data.link;
                }
                else {
                    alert("Error");
                }

            }
        });
    });
}

答案:

由于这一行代码中的一个字符,整个事情没有成功:

`var uname = 'Sample_'+ranNum;` 

出于某种原因,_ 字符是问题所在,而 AJAX 不想接受它。 换句话说:

var uname = 'Sample'+ranNum; 

这一行就可以了:=)

最佳答案

好的,将您的 create_sample_user() 方法替换为:

$(document).ready(function() {
    var button = $("#create-sample-user");
    button.click(function() {
        var ranNum = 1 + Math.floor(Math.random() * 100);
        var uname = 'Sample_'+ranNum;
        $("#id_username").val(uname);
        $("#id_email").val(uname+'@'+uname+'.com');
        $("#id_password").val(uname);
        $("#id_password2").val(uname);
    });
}​);​

此外,尝试删除 function register_user() 函数包装器。

这应该可以做到。它也应该弹出成功警报框(我更改了您的 AJAX URL 以使用 jsFiddle 的 AJAX 回显): http://jsfiddle.net/MQ6Cq/4/

更新(因为你发布了你的代码 - 我会在发现错误时更新它):

  • 您现在有两个 $(document).ready() 调用 - 删除第一个(已编辑)
  • 您必须删除行 function register_user() { 和 register user click handler 周围的右括号

我对我之前的 fiddle 做了一个小更新,以防它有助于测试,并将请求类型更改为“GET”。打开浏览器的控制台 (F12),右键单击并打开 XMLHttpRequests 的日志记录。然后运行它,你会看到 AJAX 成功传输数据。我不知道你的其他东西有什么问题,但我没有可以测试它的服务器,而且我没有得到足够的反馈来了解在你尝试每个建议后发生了什么(或者即使你'重新尝试)。我只是希望这可以帮助您解决问题。

祝你好运! :)

关于javascript - JQuery,函数看不到文本字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12357230/

相关文章:

javascript - 音频数组缓冲区到音频元素

javascript - 使用正则表达式提取字符串的一部分

javascript - 停止 Ajax 循环 JQuery

javascript - .datepicker日期选择效果查询

javascript - 单击按钮时如何删除只读属性

javascript - jQuery Mobile ui 响应表添加额外的标题

javascript - 将 $watch 附加到指令中的输入字段

javascript - Jquery Scroller 需要在到达结束后停止滚动

javascript - 如何在此模态 div 中显示此 .php 文件?

javascript - 如何使 jQuery 可排序放在空列上?