jQuery的.val()输出HTML默认输入字段值,而不是用户输入的值。

3

我有一个问题...我试图获取所有输入字段的数据进行验证,但是.val()返回的是HTML中的默认值,而不是用户输入的内容。也许是因为我将此脚本放在domready中?我无法弄清楚...并且在jsfiddle上运行得更好!:S

$(document).ready(function() {


        //Login Ajax
        $("#loginform").submit(function(){
            var url = $(this).attr("action");

            //Get input variables
            var user_name = $("input[name=user_name]");
            var user_password = $("input[name=user_password]");

                        //border control
                        if (user_name.val() == "username" && user_password.val() == "password") {
                            user_name.addClass("error");
                            user_password.addClass("error");
                            return false;
                        } else {
                            user_name.removeClass("error");
                            user_password.removeClass("error");
                        }

                            if (user_name.val() == "username") {
                                user_name.addClass("error");
                                return false;
                            } else {
                                user_name.removeClass("error");
                            }

                        if (user_password.val() == "password") {
                            user_password.addClass("error");
                            return false;
                        } else {
                            user_password.removeClass("error");
                        }

            return false;
        });


        //Registration Ajax
        $("#regsitrationform").submit(function(){
            var url = $(this).attr("action");


            return false;
        });


});

你能提供一个JSFiddle的链接吗?另外,你还可以做一件事情。把默认值放在占位符中:<input type="text" name="test" value="" placeholder="默认值" /> - Roger
请问您可以一起贴出这个页面的HTML代码吗? - Anthony Grist
1个回答

2

我只是猜测,也许你所处的上下文环境不正确。

如果您的页面上有多个同名输入框,您需要告诉jQuery应该使用哪一个。

在提交回调函数中,this指的是表单元素。因此,您的代码可能如下所示:

var user_name = $("input[name=user_name]", this);
var user_password = $("input[name=user_password]", this);

猜得好,你完全正确!有两个元素...用相同的名称进行登录和注册...谢谢!!!!! - user796443
这刚刚为我节省了数小时的时间! - Ed Bayiates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接