2017-03-01 128 views
0

的header.php输入值没有在jQuery中拾起?

<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$(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); 
      } 
      }); 
     }); 

在控制台中,消息显示,除了行名称为空白。我没有得到任何错误,只是输入没有得到回应。当我尝试打印数值长度时,它显示为1.

+0

如果你在一个空的jQuery对象上调用'.val()',它会返回'undefined',而不是“空白”,所以如果你空白,这意味着jQuery确实找到了输入问题。你期望输入有什么价值? – nnnnnn

+0

我输入'test'作为一个值,所以在控制台应该显示'新行名称:测试'。目前还没有确定的验证。只需要确保它进入数据库@nnnnnn – herondale

+0

一个愚蠢的问题,但是......'header.php'和'footer.php'都包含在同一页上?大概你没有得到一个占位符,因为'placehold ='而不是'placeholder ='?那可能会“腐蚀”''吗?尝试修复'placeholder',看看是否得到有效的输入。 –

回答

1

我不得不这样做:

new_row_name = $('.popover #new-row-name').val(); 

将其绑定到类。现在它拿起价值。谢谢您的帮助!

0

这是因为变量'row_id_to_rename'在$('body')内的点击函数中未知。

您必须声明变量在顶部,这些功能以外:

$(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() { 
     ... 
    }); 
}); 
+1

问题是'new_row_name',而不是'row_id_to_rename';) –

+0

我截断了我的代码。我确实有这样的声明,因为我首先尝试使用外部js文件,如下所示:' \t ...' – herondale

+0

不好意思啊,你有没有解释那,大声笑。我会尝试找到问题并作出另一个答案,也许,如果我知道答案;) –

0

输入被拾起就是该值是空字符串。

<input type="text" placehold="Title" id="new-row-name"> 

如果它会在您的控制台中没有发现你会看到“新行名称:未定义

<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>

+1

什么让我感到困惑的是为什么它是空白的,即使当我输入一个值 – herondale

+0

你输入了什么文字 – artemisian

+0

'测试','测试'只是简单的字符串@artemi西安 – herondale