xjx424 Posted November 27, 2008 Share Posted November 27, 2008 Hi,I am trying to copy a value from one input to another. My problem is that one of the values is in a repeat region. I figured I would try and create a loop but I don't know if I'm even close to doing it right. My goal is to have the "from" input show up in the "to" input. Here's what I have. <html><head><script type="text/javascript">function moveBody() { var to = document.getElementById('to').value; var from = document.getElementById('from').value; for(var i = 0; i < from.length; i++) { to = from[i]; }}</script></head><body><table> <tr> <td><input type="text" id="to"></td> </tr></table><table> <?php do { ?> <tr> <td><input type="text" id="from" value="<?php echo $row_rsEmail['to_email']; ?>"> <input type="button" onClick="moveBody()" value="Click"></td> </tr> <?php } while ($row_rsEmail = mysql_fetch_assoc($rsEmail)); ?></table></body></html> All suggestions are appreciated. Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 So do you want the value of the first input box to shift to the second one, leaving the first one blank when the user hits the button?PS: the value of your second box is <?php echo $row_rsEmail['to_email']; ?> in words when a first opened the browser page but the refresh doesn't make it come back. I don't know php, but I assume you don't want that to show but rather to do something? Link to comment Share on other sites More sharing options...
xjx424 Posted November 27, 2008 Author Share Posted November 27, 2008 Kind of, the first input box will be hidden so the value can stay. The php code will just appear as its text value onload. I just need the value passed to the second using onclick. Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 So I got a little progress, How is this: <script type="text/javascript">function moveBody() {document.getElementById("from").value = document.getElementById("to").value;}</script> That takes the value that was in the "From", or lower box and puts it in the "to" or box on top. Both of them now have the same value. Is that what you want? Link to comment Share on other sites More sharing options...
xjx424 Posted November 27, 2008 Author Share Posted November 27, 2008 not quite, that will only work for one row. I need that function to loop through the repeating region for every row. Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 Does that mean you will have multiple from boxes or something? Can I see the whole code, I'm not quite sure what you mean by repeating region for every row? Link to comment Share on other sites More sharing options...
xjx424 Posted November 27, 2008 Author Share Posted November 27, 2008 Here's the page: http://annearundelproperties.net/agents/emails/sent.phpIt's an email page where when you click on a row on the left the message will appear on the right. This part here loops through the database pulling out all email addresses and creating the list you see.<?php do { ?><tr><td><input type="text" id="from" value="<?php echo $row_rsEmail['to_email']; ?>"><input type="button" onClick="moveBody()" value="Click"></td></tr><?php } while ($row_rsEmail = mysql_fetch_assoc($rsEmail)); ?> Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 var frombox = document.getElementsById("from").value;for (var i = 0, frombox[i], i++) { frombox[i] = document.getElementById("to").value} I don't know maybe that is what you're looking for? Link to comment Share on other sites More sharing options...
xjx424 Posted November 27, 2008 Author Share Posted November 27, 2008 I think that's real close to what I need but just can't get it to work. Thanks for trying. Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 Ok I may have made a mistake in the code let me try again var frombox = document.getElementsById("from");for (var i = 0, frombox[i], i++) {frombox[i].value = document.getElementById("to").value Link to comment Share on other sites More sharing options...
xjx424 Posted November 27, 2008 Author Share Posted November 27, 2008 dang, still nothing Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 You have this so far function moveBody() { var link = document.getElementById('body_link'); for(var i = 0; i < link.length; i++) { link[i].onclick = document.getElementById('body_text').value = document.getElementById('email_body').value; }} try changing it to this function moveBody() { var link = document.getElementsById('body_link'); // add an s to Element here. You want to get all of them for(var i = 0; i < link.length; i++) { link[i].onclick = function movebody2() { //make this a function here link[i].value = document.getElementById('email_body').value; } }} Link to comment Share on other sites More sharing options...
xjx424 Posted November 27, 2008 Author Share Posted November 27, 2008 That makes sense but still won't work! I've been trying for days to get this!Also, someone had mentioned that you can't add an "s" but my code worked with and without it??? Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 You know xjx424, I'm about as stumped as you. Lol. Sorry man I tried.About the 's' at the end, I used it in getElementsByTagName but i'm not sure if it works in Id. I think it makes it plural but again I'm not entirely sure. I'm not an expert, just a trial and error guy.EruEDIT: actually, let me try again I'm going to look at one of my old posts about something. one sec Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 OK, I took a look at your code, try making the anchors onclick="moveBody" to onclick="moveBody()" add the parantheses Link to comment Share on other sites More sharing options...
xjx424 Posted November 27, 2008 Author Share Posted November 27, 2008 oops, that would help. Still not there but I think I'm getting closer. Gonna keep messing around with it. thanks for your help Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 TRY this... function moveBody() { var link = document.getElementById('body_link'); // add an s to Element here. You want to get all of them for(var i = 0; i < link.length; i++) { link[i].onclick = function movebody2() { //make this a function here document.getElementById('body_text').value = document.getElementById('email_body').value; } }}window.onload= moveBody; Take all the onclick values off of your anchors. And if all else fails after that turn this line: document.getElementById('body_text').value = document.getElementById('email_body').value; into link.value = document.getElementById('email_body').value;EDIT: also use the 's' after elements in the first one where link is defined.... if all else fails Link to comment Share on other sites More sharing options...
xjx424 Posted November 27, 2008 Author Share Posted November 27, 2008 tried it all, still nothing. I even tried to loop through the "email_body" variables as well with no success. You can see those changes now with a view source Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 You said this one worked? <script type="text/javascript">function moveBody() {document.getElementById("from").value = document.getElementById("to").value;}</script> and this is the current one -ish function moveBody() { var link = document.getElementsById("body_link"); for(var i = 0; i < link.length; i++) { link[i].onclick = function movebody2() { link[i].value = document.getElementById("email_body").value;}}}window.onload= moveBody; I just want to post this to look at the difference if the first one worked I want to see how I can repeat that. Link to comment Share on other sites More sharing options...
xjx424 Posted November 27, 2008 Author Share Posted November 27, 2008 yep, and here's my most current attempt function moveBody() { var link = document.getElementById('body_link'); for(var i = 0; i < link.length; i++) { link[i].onclick = function movebody2() { var emailBody = document.getElementById('email_body').value; for(var i = 0; i < emailBody.length; i++) { document.getElementById('body_text').value = emailBody[i]; } } }} Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 The problem is somewhere in the for loop. I am rebuilding the function from scratch step by step and using alerts to let me know if things are functioning and the no alerts come up when the for loop is in there. We should examine that more closely. Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 I'm getting close give me 10-20 minutes. Link to comment Share on other sites More sharing options...
xjx424 Posted November 27, 2008 Author Share Posted November 27, 2008 can you give me an example of how you are testing with the alerts? Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 start with function init () { alert("Hi this part is working or whatever u want to type here")}window.onload = init; then build the next part function init () { var links = document.getElementsByTagName("a"); alert("im working again. Or if you want to you can ask it to spit a variable to see if the variable stored right.")}window.onload = init; Link to comment Share on other sites More sharing options...
Sansespere Posted November 27, 2008 Share Posted November 27, 2008 I am stuck here. I can't think how to get each of the emails values seperately. You cannot use getElementsById with element(s) with an s., so idk. You can use with TagName though. function init () { var links = document.getElementsByTagName("a"); for (var i = 0; links[i]; i++) { links[i].onclick = function hiya () { var bodies = document.getElementById("email_body"); for (var i2 = 0; bodies[i2]; i2++) { } alert("yes"); } }}window.onload = init; Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.