У меня есть изображение, которое при нажатии указывает на форму с помощью пользовательского атрибута, и эта форма затем отправляет свои скрытые данные через .post
Вот код:
$("img.imgsubmit").live('click',function(){
var msg = $(this).attr('title');
var r=confirm(msg+'?');
if (r==false){return false;}
var form = '#'+$(this).attr('imgsubmit');
var url = $(form).attr('action');
var output = OutputName($(form).attr('output'));
$("#"+output).html('<img src="images/ajax-loader.gif" alt="Working..." />');
// get post values
var data = {}; // define data object
$(':input',this).each(function(index){
alert(this); // NEVER HAPPENS
var key = $(this).attr('name');
var val = $(this).val();
data[key] = val;
});
// post
$.post(url,data, function(html) {
$("#"+output).html(html).slideFadeShow("fast");
});
return false;
});
Так что все в порядке, пока:
$(':input',form).each(function(index){
alert(this); // NEVER HAPPENS, so it's never finding all the inputs
var key = $(this).attr('name');
var val = $(this).val();
data[key] = val;
});
Я перепробовал все с той первой строкой:
$(':input',$(form)).each(function(index){
$(':input',form).each(function(index){
$(form+' :input').each(function(index){
Ничто из этого не заставляет его работать. По сути, он вообще не работает с объектом, чтобы выбрать скрытые входные данные внутри элемента формы.
tl; dr все в порядке, кроме: селектор ввода не работает при доступе к форме var.