JQuery отправить не установить значения на входах - PullRequest
2 голосов
/ 04 ноября 2010

У меня есть эта форма:

<form id="segform" action="TestServlet" method="POST" >
  <div id="actives" class="rounded-corners">
    <div class="column">                        
     <div class="portlet"><a href="#">link1</a></div>
    </div>
  </div>

  <div id="inactives" class="rounded-corners">
    <div class="column">
     <div class="portlet"><a href="#">link2</a></div>
    </div>
  </div>

  <input type="hidden" name="ffactives" value="foovalue" />
  <input type="hidden" name="ffinactives" value="foovalue" />
  <input type="submit"  />
</form>

Мне нужно, чтобы при отправке формы содержимое ссылок устанавливалось на вход:

ffactives = "link1" вместо "foovalue"ffinactives = "link2" вместо "foovalue"

Теперь я использую код jquery:

$('#segform').submit(function(){
  var act = $('#actives div.column div.portlet a').text();
  var inact = $('#inactives div.column div.portlet a').text();
  $('input[name=ffactives]').val(act);
  $('input[name=ffinactives]').val(inact);
  return true;
});

Но когда я получил входные данные, значения не изменились.я аспект ffactives = "link1" и ffinactives = "link2", но я получаю ffactives = "foovalue" и ffinactives = "foovalue"

Что не так

Ответы [ 2 ]

2 голосов
/ 04 ноября 2010

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

  • Работает ли это в обработчике document.ready? например ваш код должен быть упакован в
    $(function() { /* current code */ });, поэтому $('#segform') не запускается, пока <form> не окажется в DOM и не будет готов к поиску (в противном случае он перехватывает обработчик submit до 0 элементов.
  • Получаете ли вы какие-либо ошибки JavaScript? Если что-то произойдет до запуска вашего кода, обработчик submit не будет привязан, и вы получите поведение отправки по умолчанию ... именно это вы и видите.
0 голосов
/ 04 ноября 2010

Полагаю, ваш JS работает неправильно.Попробуйте эту версию вашего обработчика отправки

$('#segform').submit(function(event){
  var act = $('#actives div.column div.portlet a').text();
  var inact = $('#inactives div.column div.portlet a').text();
  $('input[name=ffactives]').val(act);
  $('input[name=ffinactives]').val(inact);

  console.log('submit:', $('input').val();

  event.preventDefault();
  return false;
});

Тогда вы должны увидеть «submit: link1» в вашей консоли при отправке формы.

...