Reputation: 789
header.php
<div id="rename-content" class="hide">
<form class="popover-form">
<div class="popover-form-content">
<div class="material-input-group stretched">
<input type="text" placehold="Title" id="new-row-name">
</div>
</div>
<div class="popover-footer pull-right">
<button type="button" class="btn btn-default flat close-popover">Cancel</button>
<button type="button" class="btn btn-default flat rename-row">Rename</button>
</div>
</form>
</div>
footer.php
In $(document).ready()
$('.edit-row-lbl').popover({
title: "Rename Row",
content: function(){
return $("#rename-content").html();
},
html: true,
placement: 'bottom',
trigger: 'manual'
});
$('.edit-col-lbl, .edit-row-lbl').click(function()
{
if ($(this).hasClass('edit-col-lbl') )
{
to_rename = 'col';
col_id_to_rename = $(this).data('col-id');
$('.edit-col-lbl').popover('show');
}
else
{
to_rename = 'row';
row_id_to_rename = $(this).data('row-id');
$('.edit-row-lbl').popover('show');
}
$('.edit-col-lbl, .edit-row-lbl').not(this).popover('hide');
});
$('body').off().on('click', '.rename-row', function()
{
var new_row_name = $('#new-row-name').val();
console.log('Rename row clicked!');
console.log('New row name: ' + new_row_name);
console.log('Row id to rename: ' + row_id_to_rename);
$.ajax({
type : 'POST',
url : base_url + 'row/renameRow',
data : {
'row_id' : row_id_to_rename,
'row_name' : new_row_name
},
success: function(message)
{
if (message == 'success')
{
console.log('Renaming successful');
window.location = window.location;
}
else
{
console.log('Error >> ' + message);
}
},
error: function(xhr, error)
{
console.log(xhr.responseText);
console.log(error);
}
});
});
In the console, the messages show up except that the row name is blank. I'm not getting any errors, just that the input is not getting picked up. When I try to print the value length it comes up as 1.
Upvotes: 0
Views: 1226
Reputation: 789
I just had to do this:
new_row_name = $('.popover #new-row-name').val();
bind it to the class. Now it picks up the value. Thanks for the help!
Upvotes: 2
Reputation: 3106
The input is being picked up is just that the value is the empty string.
<input type="text" placehold="Title" id="new-row-name">
If it would be not found in your console you would have seen 'New row name: undefined
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('.edit-col-lbl, .edit-row-lbl').click(function()
{
if ($(this).hasClass('edit-col-lbl') )
{
to_rename = 'col';
col_id_to_rename = $(this).data('col-id');
$('.edit-col-lbl').popover('show');
}
else
{
to_rename = 'row';
row_id_to_rename = $(this).data('row-id');
$('.edit-row-lbl').popover('show');
}
$('.edit-col-lbl, .edit-row-lbl').not(this).popover('hide');
});
$('body').off().on('click', '.rename-row', function()
{
var new_row_name = $('#new-row-name').val();
console.log('Rename row clicked!');
console.log('New row name: ' + new_row_name);
});
});
</script>
</head>
<body>
<div id="rename-content" class="hide">
<form class="popover-form">
<div class="popover-form-content">
<div class="material-input-group stretched">
<input type="text" placehold="Title" id="new-row-name">
</div>
</div>
<div class="popover-footer pull-right">
<button type="button" class="btn btn-default flat close-popover">Cancel</button>
<button type="button" class="btn btn-default flat rename-row">Rename</button>
</div>
</form>
</div>
</body>
</html>
Upvotes: 0
Reputation: 1969
It's because you have variable 'row_id_to_rename' that is unknown inside your $('body') on click function.
You have to declare that variable at the top, outside of those functions:
$(document).ready(function() {
var row_id_to_rename; // <- put here!
$('.edit-row-lbl').popover({
...
});
$('.edit-col-lbl, .edit-row-lbl').click(function() {
...
});
$('body').off().on('click', '.rename-row', function() {
...
});
});
Upvotes: 0