jquery val()里面的自定义函数

时间:2011-04-24 11:43:47

标签: javascript jquery undefined

我的外部javascript文件中有这样的函数(jQuery已包含在主html文件中):

function userlogin(){
    $('#ologinbox').html('<div class="input"><div class="input-text"></div><div class="input-field"><img src="css/images/loading.gif" /></div></div>');
    var data = 'username=' + $('#loginusername').val() + '&password=' + $('#loginpassword').val();
    alert(data);
}

我的html是这样的:

<div class="input">
<div class="input-text">UserName: <div>
<div class="input-field"><input name="loginusername" id="loginusername" /></div>
</div>
<div class="input">
<div class="input-text">Password: </div>
<div class="input-field"><input name="loginpassword" id="loginpassword" type="password" /></div>
</div>
<div class="input">
<div class="input-text"></div>
<div class="input-field"><input type="submit" value="Send" onclick="userlogin();return false;"/></div>
</div>

当我点击按钮时,警告框中显示的$('#loginusername').val()$('#loginpassword').val()的返回值未定义。

我想知道为什么会这样?

4 个答案:

答案 0 :(得分:3)

$('#ologinbox').html('<div class="input"><div class="input-text"></div><div class="input-field"><img src="css/images/loading.gif" /></div></div>');
var data = 'username=' + $('#loginusername').val() + '&password=' + $('#loginpassword').val();

假设您发布的登录信箱是div的一部分,标识为ologinbox,您只是替换了其内容,因此丢失了元素#loginusername#loginpassword。< / p>

在检索值后替换内容:

var data = 'username=' + $('#loginusername').val() + '&password=' + $('#loginpassword').val();
$('#ologinbox').html('<div class="input"><div class="input-text"></div><div class="input-field"><img src="css/images/loading.gif" /></div></div>');

(请注意您的原始代码段 如何包含明确的<div id="ologinbox">!请将来将您的测试用例放入jsfiddle.net < strong>验证它会重现问题,否则我们只是在猜测。)

答案 1 :(得分:1)

只需使用jQuery来处理click事件。不知道为什么你只是没有得到一个空字符串。要修复它,请分配属性并考虑使用jQuery来处理事件。

<script type='text/javascript'>
    $(document).ready(function(){

        $("#button").click(Foo);

        function Foo(){
           var myVar = $("#someInput").val();
           alert(myVar);
           return false;
        }

    });
</script>


<input id="someInput" value=""/>
<input  type="submit" />

答案 2 :(得分:0)

我在jsfiddle中尝试了这个,并且这样做是正确的:http://jsfiddle.net/9gDas/。您是否在提交按钮上绑定了另一个事件,还是可以发布更多代码?在jsfiddle中我使用了jQuery 1.5.2,你使用哪个版本?

编辑: 正如您在此处所见:http://jsfiddle.net/r4QG3/您提供的代码正常运行。我无法测试ajax帖子。这段代码出了什么问题?

答案 3 :(得分:0)

试试这个:http://jsfiddle.net/pvQGs/

<input id="someInput" />
<input id="submitter" type="submit" />

$("#submitter").click(function() {
    var myVar = $('#someInput').val();
    alert(myVar);
    return false;
});