无法从动态加载的内容中获取文本框值

时间:2017-04-19 12:36:48

标签: javascript php jquery

使用此功能,网站将从actions / create_random_profile.php加载用户个人资料。

$(function() {
 $('body').on('click','#random_profile',function(){
//var msgid = $(this).attr("id");
//var dataString4 = 'msgid=' + msgid;
$('#random_profile_area_loader').html('<img src="img/loader.gif" class="loading" />'); 
$.ajax({
    type: "POST",
    url: "actions/create_random_profile.php",
    //data: dataString4,
    cache: false,
    success: function(data){
    if (data == 0) {
    $('#random_profile_area').html('Not Sent!');
    } else {
    $('#random_profile_area_loader').html('');
    $('#random_profile_area').append(data);
    }
    }  

});
return false;
});
});

这里一切都很好。这是我输出来自create_random_profile.php

的一个例子
</php
Echo '
<div class="col-md-2 created_profile">
/////.......///////
  <div class="form-group">
    <label for="email">Email:</label>
    <input type="text" class="form-control" id="email" name="email" value="'.$email.'">
  </div>
/////.......///////
Echo '<button type="button" class="btn btn-default save_random_profile" id="'.$rand_identifier.'">Create this profile</button>';
</div>';
 ?>

我知道我必须拥有唯一的ID,因为可以触发多个脚本。我知道该怎么做。问题出在这里: 所有变量都返回未定义的值。 我试过了

$("input#bmonth").val(); 

OR

document.getElementById('bmonth').value; 

$("#bmonth").val();

当我为每个表单添加唯一标识符时,问题就出现了问题。让我们说var unique_identifier = 22 我应该用

$("#bmonth"+unique_identifier).val(); 

获取值
<input type="text" id="bmonth22" value="3"> 

但它也不起作用。

我提到它可以在我已制作的其他剧本中使用,但我无法在这里看到错误。我认为这是因为内容是dinamically加载,但我使用$(&#39; body&#39;)。on()它应该没问题。有什么想法吗?

$(function() {
 $('body').on('click','.save_random_profile',function(){
var identifier_id = $(this).attr("id");
 $('.created_profile').html('<img src="img/loader.gif" class="loading" />'); 
// var phcat =  document.getElementById('phcat'+identifier_id).value; 
 //var phcat =  $('#created_profile'+identifier_id).children().document.getElementById('phcat').value;
 var phcat = "man.png";
  var phprofile = "man.png";
/*var phcat =  document.getElementById('phcat').value;
var phprofile =  document.getElementById('phprofile').value;*/

var byear =  $("#byear").val();//document.getElementById('byear').value;
var bmonth =  $("input#bmonth").val();//document.getElementById('bmonth').value;
var bday =  $("input#bday").val();//document.getElementById('bday').value;
var country =  $("input#country").val();//document.getElementById('country').value;
var email =  $("input#email").val();//document.getElementById('email').value;
var password =  $("input#password").val();//document.getElementById('password').value;
var username =  $("input#username").val();//document.getElementById('username').value;
var interested_in =  $("#interested_in").val();//document.getElementById('interested_in').value;
var sex =  $("#sex").val();//document.getElementById('sex').value;
var status =  $("#status").val();//document.getElementById('status').value;
var description =  $("#description").val();//document.getElementById('description').value;
var dataString = 'phcat=' + phcat + '&phprofile=' + phprofile + '&interested_in=' + interested_in + '&sex=' + sex + '&status=' + status + '&description=' + description + '&byear=' + byear + '&bmonth=' + bmonth + '&bday=' + bday + '&country=' + country + '&email=' + email + '&password=' + password + '&username=' + username;
alert(dataString);
$.ajax({
    type: "POST",
    url: "actions/save_random_profile.php",
    data: dataString,
    cache: false,
    success: function(data){
    if (data == 0) {
    $('.created_profile').html('Not Sent!');
    } else {
    $('.created_profile').html(data);
    }
    }  
});
return false;
});
});

1 个答案:

答案 0 :(得分:0)

问题很简单。

您正在尝试访问不存在的内容,这就是您未定义的原因。 只有当它存在时,您才能访问$(“input#bmonth”)。

从您粘贴的代码中。我认为只有在您通过调用以下网址

加载随机配置文件后才会进入dom
"actions/create_random_profile.php"

解决方案是在创建随机配置文件后访问$(“input#bmonth”)。