2011-04-24 59 views
0

我在我的外部JavaScript文件這樣的功能(已經包括jQuery的主HTML文件):自定義函數內的jQuery VAL()

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()的返回值未定義。

我想知道爲什麼?

+2

哇,你的「完整」代碼是「comple」與原來的問題不同(不存在)(http://jsfiddle.net/W6E6J/)。請在發佈之前實際運行您的測試用例,聲稱它們不起作用!)。我相信你可以通過取消AJAX調用來縮小問題的範圍(如果問題消失了,那麼你已經縮小了這個範圍)。 – 2011-04-24 11:59:04

+0

你現在有一個完全不同的兩個問題。請刪除原始的,破損的測試用例,因爲它與您的「完整」代碼沒有任何相似之處。 – 2011-04-24 12:04:24

+0

@Tomalak我給出的第一個代碼是我真實代碼的一個樣本,唯一的問題是我提到的代碼! AJAX調用完美無缺。 – 2011-04-24 12:07:51

回答

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(); 

假設您發佈的登錄框一個id ologinbox一個div的一部分,你剛剛更換其內容,並因此失去了元素#loginusername#loginpassword

更換內容檢索值:

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">會作出這樣明確的請在將來把你的testcase into jsfiddle.net到驗證它重現了這個問題,否則我們只是在猜測。)

+0

yup.that問題.LOLs – 2011-04-24 12:18:46

+0

@詹姆斯:大聲笑確實。 – 2011-04-24 12:21:45

+0

@詹姆斯:請看我如何編輯你的問題。 – 2011-04-24 12:23:48

1

只需使用jQuery來處理點擊事件。不知道爲什麼你只是沒有得到一個空字符串。要修復它,分配屬性並考慮使用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" /> 
+0

謝謝,但我不認爲這是問題所在。奇怪的是我的代碼實際上工作得很好直到今天! – 2011-04-24 11:50:52

+0

@James好吧,大家發佈的代碼複製你沒有錯誤的事情,所以它可能是其他問題 – JohnP 2011-04-24 11:52:50

+0

我看不出這個代碼片斷在功能上與OP有什麼不同。 – 2011-04-24 11:56:49

0

我的jsfiddle嘗試這樣做,有正確的做到這一點的工作:http://jsfiddle.net/9gDas/。你有沒有在提交按鈕上綁定另一個事件,或者你可以發佈一些更多的代碼?在jsfiddle我使用jQuery 1.5.2,你使用哪個版本?

編輯: 正如你可以在這裏看到:http://jsfiddle.net/r4QG3/你提供的代碼工作正常。我無法測試ajax帖子。這段代碼出了什麼問題?

+0

我提供了更多的細節。 – 2011-04-24 11:59:19

+0

請參閱我編輯的答案。 – 2011-04-24 12:10:08

0

試試這個:http://jsfiddle.net/pvQGs/

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

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

這完全相同。 – 2011-04-24 11:56:21

+0

是的我知道那些作品,但我只想知道爲什麼我的不會! – 2011-04-24 12:01:44