2012-05-24 3 views
3

Я пытаюсь найти значение идентификатора пользователя и пароля в нижнем HTML, используя следующий код jQuery, но он не возвращает никакого значения. Что я делаю не так?Как найти значение элемента sibling с помощью jQuery при щелчке

<div id='mainpane'> 
    <form id='login' method='post' action='#'> 
     <p>User Id:<input id='userid' type='text' name='userid'></input></p> 
     <p>Password:<input id='password' type='text' name='password'></input></p> 
     <p><input id='submit' type='submit' name='Submit' value='Submit'></input></p>   
    </form> 
    <div id="message"></div> 
    <p>Not a member? <a href="user-signup.html">Signup</a></p> 
</div> 

Вот код JQuery:

$(document).ready(function() { 
    $('#login').delegate('input#submit','click',function(){ 
     alert('user id is: '+$(this).parent().parent().find('#userid').html()); 
     var request = $.ajax({ 
      type:"POST", 
      url:"/login", 
      data: {userid:$('#userid').text(), password:$('#password').text} 
      }); 

     }); 

Оповещение возвращается с пустыми данными. Цените любые указатели на то, что я делаю неправильно.

Спасибо, Калян.

+0

сделал это скрипка так просто посыпает его в ayways: http://jsfiddle.net/tR3TY/1/ –

+0

Те не двойники элементов (у них есть разные родители). Но вам не нужно обход DOM '.parent()', '.find()' или какие-либо методы, потому что элементы, которые вы пытаетесь получить, имеют идентификаторы и могут быть просто выбраны с помощью '$ ('# idhere'). '. – nnnnnn

ответ

4

использовать .val() для получения значения ввода.

var userid = $("#userid").val(); 
var pass = $("#password").val(); 
+0

+1 Самый простой ответ на вопрос. – iambriansreed

2

Вобщ:

$.post('/login', $('#login').serialize(), function() {}); 

в месте вашего $.ajax вызова :), то .serialize() принимает все значения формы INPUTs' и передать их на сервер, закодированный для вас, как хорошо :)

+0

Это хорошо! удалил мой ответ! (примечание для допроса.) –

+1

-1 Это хорошо, но не отвечает на вопрос. Я тоже не понимаю голоса. – iambriansreed

+0

@iambriansreed уверен, вы все равно имеете право на свое мнение :) –

2

у вас есть немало проблем, так вот исправленный код с примечаниями:

JQuery

$(function() { 
// same as document.ready 
    $('#login').submit(function(event){    
    // runs whenever the form is submitted - either enter or submit button is clicked 
     event.PreventDefault(); 
     // since the form is submitted via ajax you wil want to keep the page from changing 
     alert('user id is: '+$('#userid').val()); 
     // no need to reach back through the DOM with .parent() use the ID its the fastest, also you get input values with .val() 
     $.ajax({ 
      type:"POST", 
      url:"/login", 
      data: $('#login').serialize() 
      // serialize() creates an object of all the form data based on the name attribute and values - very clean 
     }); 
    }); 
}); 

HTML

<div id='mainpane'> 
    <form id='login' method='post' action=''> 
     <p>User Id:<input id='userid' type='text' name='userid'/></p> 
     <p>Password:<input id='password' type='text' name='password'/></p> 
     <p><input id='submit' type='submit' name='Submit' value='Submit'/></p>   
    </form> 
    <div id="message"></div> 
    <p>Not a member? <a href="user-signup.html">Signup</a></p> 
</div> 

Входы Самозакрывающиеся.

+1

Спасибо, что исправил мой html. – KumarM

+0

@KumarM и jQuery. :) – iambriansreed

-1

вы попробуете этот код

$(document).ready(function() { 
     $('#login').delegate('input#submit','click',function(){ 

      alert('user id is: '+$(this).parent().parent().find('#userid').val()); 
      var request = $.ajax({ 
       type:"POST", 
       url:"/login", 
       data: {userid:$('#userid').val(), password:$('#password').val()} 
       }); 

      }); 
     }); 
+1

Я не спускал вниз, но было бы неплохо, если бы вы объяснили, что вы изменили и почему (вместо того, чтобы оставить его читателю, чтобы сравнить ваш код с исходной версией). – nnnnnn