Как получить текст дочерней формы при нажатии на элемент ввода



Это мой HTML макет. У меня есть несколько форм:



 <table>
<form>
<tr>
<td id="1">Text1</td>
<td id="2">Text2</td>
<input type="button" value="Submit" id="submit1">
</tr>
</form>
<form>
<tr>
<td id="1">Text1</td>
<td id="2">Text2</td>
<input type="button" value="Submit" id="submit2">
</tr>
</form>

</table>


Я хочу получить текст между <td> и id=1. Вот что я сделал:



$(document).ready(function(){
$('[id*="submit"]').on('click', function() {
console.log($(this).closest("form").find('td first').text());
});
});
466   3  

3 ответов:

Вот вам и решение

$(document).ready(function(){
  $('[id*="submit"]').on('click', function() {
    console.log($(this).closest('form').find('td').first().text());
  }); 
});  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <table>
    <tr>
      <td id="form1-1">Form 1: Text1</td>
      <td id="form1-2">Text2</td>
       <input type="button" value="Submit" id="submit1">
     </tr>
 </table>
</form>
<form>
 <table>
   <tr>
     <td id="form2-1">Form 2: Text1</td>
     <td id="form2-2">Text2</td>
     <input type="button" value="Submit" id="submit2">
   </tr>
  </table>
</form>

В вашем коде мало чего можно заметить

  • id должно быть уникальным
  • form тег должен находиться вне table

Надеюсь, что это будет Вам.

Ты почти угадал! Это должно быть

$(this).closest("form").find('td#1').text()

Вы можете не использовать идентификаторы в этом контексте; они должны быть уникальными.

Вы должны быть предпочтительнее class, чем id, мне нравится то, что Julia Finarovsky сказал, id должно быть уникальным.

Вы почти угадали, хотя просто забыли : между td и first в find param

$(document).ready(function(){
    $('[id*="submit"]').on('click', function() {
        console.log($(this).closest("form").find('td:first').text());
    }); 
}); 

Надеюсь, это поможет.

Comments

    Ничего не найдено.