2014-10-30 70 views
2

我已經經歷過這個之前,但我不知道我在做什麼錯。我也看看文檔加上堆棧溢出現有的問題,但我找不到任何答案。這讓我發瘋。我知道我錯過了一些東西,但我無法追蹤它。這是我的index.php中jquery .find()不返回值

<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script> 
<script type="text/javascript" src="js/file.js"></script> 

<?php 
echo '<table border="1" width="50%">'; 
foreach($datas as $data){ 
    echo '<form method="post" action="" class="vForm">'; 
    echo '<tr><td><input type="text" name="qty" value="1" size="3" /></td></tr>'; 
    echo '<tr><td><input type="submit" name="add" value="add" class="button" /></td></tr>'; 
    echo '</form>'; 
} 
echo '</table>'; 

所以在我file.js

$(function() { 
    var CA = (function() { 

     function add(form) { 
      console.log('Form: ' + form.find('[name="qty"]').val()); 
      return false; 
     } 

     $('.vForm').submit(function(e) { 
      add($(this)); 
      e.preventDefault(); 
     }); 

    }()); 
}); 

出於某種原因,我能不能夠得到文件中的文本字段中的「數量」值。 JS。下面的代碼也失敗了。我剛剛在控制檯日誌中顯示「未定義」。

console.log('Form: ' + form.find('input[name="qty"]').val()); 

任何幫助,非常感謝。謝謝。

+0

嘗試在'$(document).ready'中包裝你的js – 2014-10-30 08:26:07

+1

@KarlViiburg $(function(){does same thing – 2014-10-30 08:26:56

+0

@DemoUser它會這樣嗎?對不起,你猜你每天都會學到一些東西。 。 – 2014-10-30 08:28:04

回答

0

好,閱讀評論部分,並提供實際的代碼之後。我認爲原因很簡單後:

的表單元素不表元素的有效孩子。你的代碼基本上呈現以下內容。

<table> 
    <form method="post" action="" class="vForm"> 
     <tr> 
      <td><input type="text" name="qty" value="1" size="3" /></td> 
     </tr> 
     <tr> 
      <td><input type="submit" name="add" value="add" class="button" /></td> 
     </tr> 
    </form> 
</table> 

正如W3C Specification說明,表元素的唯一有效的孩子們 '標題', '山口' 或 'COLGROUP', 'THEAD', 'TFOOT',或 'TBODY'。

我不知道如何jQuery的.find()方法,具體的工作原理,當它到達jQuery是如何編程,而是在固定你想要的效果這個無效的HTML結果:

<form method="post" action="" class="vForm"> 
    <table> 
     <tr> 
      <td><input type="text" name="qty" value="1" size="3" /></td> 
     </tr> 
     <tr> 
      <td><input type="submit" name="add" value="add" class="button" /></td> 
     </tr> 
    </table> 
</form> 

Demo, illustrating the above(check your console)

+0

我想指出,你的問題是轉載與無效的HTML,但更重要的是,即使上述本身,技術上無效,它仍然有效,部分,我敢肯定,由於如何瀏覽器呈現HTML。 – Daedalus 2014-10-30 21:00:21

+0

此外,如果有人能夠找到爲什麼tr元素是w3c規範中表格的表格看起來有效的孩子,請鏈接相關文檔,因爲我找不到它。 – Daedalus 2014-10-30 21:08:37

+0

現在我明白了這個問題,謝謝你的解釋。是的,它與'table'和'form'的結構有關。也許我應該回顧我的代碼,並考慮如何重構它。我會接受你的回答。謝謝大家幫助我。 – UserProg 2014-10-31 02:26:08

-2

我親愛的朋友,它工作正常。

<?php 
$datas=array("Volvo","BMW","Toyota"); 
foreach($datas as $data){ 
echo '<form method="post" action="" class="vForm">'; 
echo '<input type="text" name="qty" value="'.$data.'" size="3" />'; 
echo '<input type="submit" name="add" value="add" class="button" />'; 
echo '</form>'; 
} 
?> 

請檢查屏幕快照,並在輸入區域我拿到了$ data的值。 enter image description here

+7

這應該是一個評論,而不是一個答案。我發佈了一個類似的評論,並鏈接到jsfiddle。 – Barmar 2014-10-30 08:36:32

+0

這是瀏覽器,謝謝你的方式。 – UserProg 2014-10-30 08:53:14